<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Docker 技术整理 | 叶落阁</title>
  <meta name="keywords" content=" linux , docker ">
  <meta name="description" content="Docker 技术整理 | 叶落阁">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="为 layui 扩展的 下拉多选select在线demo： http:&#x2F;&#x2F;yelog.org&#x2F;layui-select-multiple&#x2F; 这个在线 demo就是本项目的 index.html。 可将项目 clone 到本地查看效果。 效果图 参数   属性名 属性值 备注    multiple 无 开启多选   lay-search 无 开启搜索   lay-case 无 大小写敏感   la">
<meta property="og:type" content="website">
<meta property="og:title" content="叶落阁">
<meta property="og:url" content="http://yelog.org/README.html">
<meta property="og:site_name" content="叶落阁">
<meta property="og:description" content="为 layui 扩展的 下拉多选select在线demo： http:&#x2F;&#x2F;yelog.org&#x2F;layui-select-multiple&#x2F; 这个在线 demo就是本项目的 index.html。 可将项目 clone 到本地查看效果。 效果图 参数   属性名 属性值 备注    multiple 无 开启多选   lay-search 无 开启搜索   lay-case 无 大小写敏感   la">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://oncj6b2vl.bkt.clouddn.com/Frg6VGOCjKJ8fdTYkekfsi-Ax9p2.png">
<meta property="article:published_time" content="2023-07-10T00:28:41.033Z">
<meta property="article:modified_time" content="2023-07-10T00:28:41.033Z">
<meta property="article:author" content="叶落阁">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://oncj6b2vl.bkt.clouddn.com/Frg6VGOCjKJ8fdTYkekfsi-Ax9p2.png">


<link rel="icon" href="/img/avatar.jpg">

<link href="/css/style.css?v=1.1.0" rel="stylesheet">

<link href="/css/hl_theme/atom-light.css?v=1.1.0" rel="stylesheet">

<link href="//cdn.jsdelivr.net/npm/animate.css@4.1.0/animate.min.css" rel="stylesheet">

<script src="//cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
<script src="/js/titleTip.js?v=1.1.0" ></script>

<script src="//cdn.jsdelivr.net/npm/highlightjs@9.16.2/highlight.pack.min.js"></script>
<script>
    hljs.initHighlightingOnLoad();
</script>

<script src="//cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.js"></script>



<script src="//cdn.jsdelivr.net/npm/jquery.cookie@1.4.1/jquery.cookie.min.js" ></script>

<script src="/js/iconfont.js?v=1.1.0" ></script>

    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7312950143901041"
     crossorigin="anonymous"></script>
<meta name="generator" content="Hexo 7.2.0"><link rel="alternate" href="/atom.xml" title="叶落阁" type="application/atom+xml">
</head>
<div style="display: none">
  <input class="theme_disqus_on" value="false">
  <input class="theme_preload_comment" value="">
  <input class="theme_blog_path" value="">
  <input id="theme_shortcut" value="true" />
  <input id="theme_highlight_on" value="true" />
  <input id="theme_code_copy" value="true" />
</div>



<body>
<aside class="nav">
    <div class="nav-left">
        <a href="/"
   class="avatar_target">
    <img class="avatar"
         src="/img/avatar.jpg"/>
</a>
<div class="author">
    <span>叶落阁</span>
</div>

<div class="icon">
    
        
            <a title="rss"
               href="/atom.xml"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-rss"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="github"
               href="https://github.com/yelog"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-github"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="facebook"
               href="https://www.facebook.com/faker.tops"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-facebook"></use>
                    </svg>
                
            </a>
        
    
        
    
        
    
        
            <a title="instagram"
               href="https://www.facebook.com/faker.tops"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-instagram"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="reddit"
               href="https://www.reddit.com/user/yelog/"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-reddit"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="weibo"
               href="http://weibo.com/u/2307534817"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-weibo"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="jianshu"
               href="https://www.jianshu.com/u/ff56736de7cf"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-jianshu"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="zhihu"
               href="https://www.zhihu.com/people/jaytp/activities"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-zhihu"></use>
                    </svg>
                
            </a>
        
    
        
    
        
            <a title="oschina"
               href="https://my.oschina.net/yelog"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-oschina"></use>
                    </svg>
                
            </a>
        
    
        
    
        
            <a title="email"
               href="mailto:jaytp@qq.com"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-email"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="qq"
               href="http://wpa.qq.com/msgrd?v=3&uin=872336115&site=qq&menu=yes"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-qq"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="kugou"
               href="https://www.kugou.com/"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-kugou"></use>
                    </svg>
                
            </a>
        
    
        
            <a title="neteasemusic"
               href="https://music.163.com/#/user/home?id=88151013"
               target="_blank">
                
                    <svg class="iconfont-svg" aria-hidden="true">
                        <use xlink:href="#icon-neteasemusic"></use>
                    </svg>
                
            </a>
        
    
</div>





<ul>
    <li>
        <div class="all active" data-rel="全部文章">全部文章
            
                <small>(172)</small>
            
        </div>
    </li>
    
        
            
                
    <li>
        <div data-rel="读书">
            <i class="fold iconfont icon-right"></i>
            读书
            <small>(4)</small>
        </div>
        
            <ul class="sub hide">
                
                    
    <li>
        <div data-rel="读书&lt;---&gt;书单">
            
            书单
            <small>(1)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="读书&lt;---&gt;阅读笔记">
            
            阅读笔记
            <small>(3)</small>
        </div>
        
    </li>

                
            </ul>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="工具">
            <i class="fold iconfont icon-right"></i>
            工具
            <small>(45)</small>
        </div>
        
            <ul class="sub hide">
                
                    
    <li>
        <div data-rel="工具&lt;---&gt;软件记录">
            
            软件记录
            <small>(10)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="工具&lt;---&gt;git">
            
            git
            <small>(8)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="工具&lt;---&gt;hexo">
            
            hexo
            <small>(24)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="工具&lt;---&gt;IDEA">
            
            IDEA
            <small>(1)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="工具&lt;---&gt;IOT">
            
            IOT
            <small>(1)</small>
        </div>
        
    </li>

                
                    
    <li>
        <div data-rel="工具&lt;---&gt;vim">
            
            vim
            <small>(0)</small>
        </div>
        
    </li>

                
            </ul>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="大前端">
            
            大前端
            <small>(15)</small>
        </div>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="后端">
            
            后端
            <small>(13)</small>
        </div>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="数据库">
            
            数据库
            <small>(6)</small>
        </div>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="运维">
            
            运维
            <small>(88)</small>
        </div>
        
    </li>

            
        
    
        
            
                
    <li>
        <div data-rel="开发">
            <i class="fold iconfont icon-right"></i>
            开发
            <small>(1)</small>
        </div>
        
            <ul class="sub hide">
                
                    
    <li>
        <div data-rel="开发&lt;---&gt;swift">
            
            swift
            <small>(1)</small>
        </div>
        
    </li>

                
            </ul>
        
    </li>

            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
        
            
        
    
</ul>
<div class="left-bottom">
    <div class="menus">
        
            
            
            
    </div>
    <div>
        
            <a class="about  hasFriend  site_url"
               
               href="/about">关于</a>
        
        <a style="width: 50%"
                
                                           class="friends">友链</a>
        
    </div>
</div>
<input type="hidden" id="yelog_site_posts_number" value="172">
<input type="hidden" id="yelog_site_word_count" value="177.3k">
<div style="display: none">
    <span id="busuanzi_value_site_uv"></span>
    <span id="busuanzi_value_site_pv"></span>
</div>

    </div>
    <div class="nav-right">
        <div class="friends-area">
    <div class="friends-title">
        友情链接
        <i class="iconfont icon-left"></i>
    </div>
    <div class="friends-content">
        <ul>
            
            <li><a target="_blank" href="https://qqdie.com">QQ爹博客</a></li>
            
            <li><a target="_blank" href="http://www.xtfml.com">系统伐木累</a></li>
            
            <li><a target="_blank" href="https://ilxx.gitee.io">Leesin&#39;s Blog</a></li>
            
            <li><a target="_blank" href="http://www.zhangxianshengnetgroup.cn">技术小仙</a></li>
            
            <li><a target="_blank" href="https://yiluyanxia.site">一路烟霞</a></li>
            
            <li><a target="_blank" href="http://panyifei.github.io">林深鹿现</a></li>
            
            <li><a target="_blank" href="https://wallleap.cn">wallleap</a></li>
            
            <li><a target="_blank" href="https://songtianfa.github.io">惊风随笔</a></li>
            
            <li><a target="_blank" href="http://www.demo1024.com/">深夜书店</a></li>
            
        </ul>
    </div>
</div>
        <div class="title-list">
    <div class="right-top">
        <div id="default-panel">
            <i class="iconfont icon-search" data-title="搜索 快捷键 i"></i>
            <div class="right-title">全部文章</div>
            <i class="iconfont icon-file-tree" data-title="切换到大纲视图 快捷键 w"></i>
        </div>
        <div id="search-panel">
            <i class="iconfont icon-left" data-title="返回"></i>
            <input id="local-search-input" autocomplete="off"/>
            <label class="border-line" for="input"></label>
            <i class="iconfont icon-case-sensitive" data-title="大小写敏感"></i>
            <i class="iconfont icon-tag" data-title="标签"></i>
        </div>
        <div id="outline-panel" style="display: none">
            <div class="right-title">大纲</div>
            <i class="iconfont icon-list" data-title="切换到文章列表"></i>
        </div>
    </div>

    <div class="tags-list">
    <input id="tag-search" />
    <div class="tag-wrapper">
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>3-hexo</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>磁盘分区</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>活着</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>浏览器</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>运维</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>AngularJs</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>centos</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>centos7</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>commands</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>concurrent</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>container</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>deepin</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>docker</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>docker仓库</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>dubbo</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>editor</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>efficiency</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>ElementUI</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>emacs</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>encoding</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>encryption</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>file-manager</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>firewall</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>fragment_cache</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>free</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>freemarker</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>ftp</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>gc</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>git</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>Git</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>GitHub</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>gray-release</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>hexo</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>home-assistant</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>IntellijIDEA</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>iot</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>java</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>javaee</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>javascript</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>jdk</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>jQuery</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>js</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>jsp</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>jstl</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>k8s</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>keybord</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>linux</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>linux命令</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>mac</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>macos</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>markdown</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>mathjax</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>maven</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>mybatis</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>nacos</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>neovim</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>nexus</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>nginx</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>node</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>ocr</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>pjax</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>postgres</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>PostgreSQL</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>rancher</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>reading</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>regex</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>samba</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>shell</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>SkyWalking</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>spring</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>spring-boot</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>springcloud</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>SpringCloud</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>springmvc</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>sql</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>swift</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>tale</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>terminal</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>tools</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>translation</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>vim</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>Vue</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>window-manager</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>yum</a>
            </li>
        
            <li class="article-tag-list-item">
                <i class="iconfont icon-tag"></i><a>zookeeper</a>
            </li>
        
    </div>

</div>

    
    <div id="local-search-result">

    </div>
    
    <nav id="title-list-nav">
        
        
        <a id="top" class="全部文章 工具 hexo "
           href="/2017/03/13/3-hexo-logs/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo开发日志-持续更新">3-hexo开发日志-持续更新</span>
            <span class="post-date" title="2017-03-13 15:44:57">2017/03/13</span>
        </a>
        
        
        <a id="top" class="全部文章 工具 hexo "
           href="/2017/03/23/3-hexo-instruction/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo使用说明">3-hexo使用说明</span>
            <span class="post-date" title="2017-03-23 15:13:47">2017/03/23</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2024/08/30/free-tools/"
           data-tag="free,tools"
           data-author="" >
            <span class="post-title" title="适合个人开发者的免费软件">适合个人开发者的免费软件</span>
            <span class="post-date" title="2024-08-30 11:25:56">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2024/08/30/ranger-shortcut/"
           data-tag="vim,terminal,file-manager"
           data-author="" >
            <span class="post-title" title="ranger(终端文件管理器)-快捷键">ranger(终端文件管理器)-快捷键</span>
            <span class="post-date" title="2024-08-30 11:20:40">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2024/08/30/rancher-operations/"
           data-tag="docker,rancher"
           data-author="" >
            <span class="post-title" title="Rancher 常用操作">Rancher 常用操作</span>
            <span class="post-date" title="2024-08-30 11:17:23">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2024/08/30/k8s-cluster-and-common-problems/"
           data-tag="docker,k8s,container"
           data-author="" >
            <span class="post-title" title="k8s 集群搭建和使用及常见问题处理">k8s 集群搭建和使用及常见问题处理</span>
            <span class="post-date" title="2024-08-30 11:16:06">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2024/08/30/jdk-gc/"
           data-tag="java,gc,jdk"
           data-author="" >
            <span class="post-title" title="JDK 垃圾回收介绍">JDK 垃圾回收介绍</span>
            <span class="post-date" title="2024-08-30 11:12:15">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2024/08/30/centos7-commands/"
           data-tag="linux,centos7,yum"
           data-author="" >
            <span class="post-title" title="Centos7 常用命令">Centos7 常用命令</span>
            <span class="post-date" title="2024-08-30 10:46:15">2024/08/30</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2024/08/30/docker-commands/"
           data-tag="docker,commands"
           data-author="" >
            <span class="post-title" title="Docker 常用命令">Docker 常用命令</span>
            <span class="post-date" title="2024-08-30 10:43:21">2024/08/30</span>
        </a>
        
        
        
        <a  class="全部文章 后端 "
           href="/2024/07/05/Jackson%20Time%20Serializer/Deserializer/"
           data-tag="java,translation"
           data-author="" >
            <span class="post-title" title="Jackson 时间序列化/反序列化详解">Jackson 时间序列化/反序列化详解</span>
            <span class="post-date" title="2024-07-05 16:00:00">2024/07/05</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2024/06/23/macos-terminal/"
           data-tag="mac,efficiency,terminal"
           data-author="" >
            <span class="post-title" title="2024年MacOS终端大比拼">2024年MacOS终端大比拼</span>
            <span class="post-date" title="2024-06-23 15:54:00">2024/06/23</span>
        </a>
        
        
        <a  class="全部文章 工具 IOT "
           href="/2024/03/22/home-assistant/"
           data-tag="home-assistant,iot"
           data-author="" >
            <span class="post-title" title="离线安装Home Assistant">离线安装Home Assistant</span>
            <span class="post-date" title="2024-03-22 09:05:44">2024/03/22</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2024/02/05/k8s-inner-training/"
           data-tag="docker,k8s"
           data-author="" >
            <span class="post-title" title="K8s-内部培训">K8s-内部培训</span>
            <span class="post-date" title="2024-02-05 09:17:27">2024/02/05</span>
        </a>
        
        
        <a  class="全部文章 开发 swift "
           href="/2024/01/02/macos-ocr-swift/"
           data-tag="swift,macos,ocr"
           data-author="" >
            <span class="post-title" title="swift 离线图片识别文字(ocr)">swift 离线图片识别文字(ocr)</span>
            <span class="post-date" title="2024-01-02 10:09:19">2024/01/02</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2023/12/11/springboot-jarlauncher/"
           data-tag="java,docker,spring-boot"
           data-author="" >
            <span class="post-title" title="Caused by: java.lang.ClassNotFoundException: org.springframework.boot.loader.JarLauncher">Caused by: java.lang.ClassNotFoundException: org.springframework.boot.loader.JarLauncher</span>
            <span class="post-date" title="2023-12-11 16:58:00">2023/12/11</span>
        </a>
        
        
        <a  class="全部文章 工具 IDEA "
           href="/2023/06/17/idea-tips-percent-mach-xml/"
           data-tag="efficiency,vim,IntellijIDEA"
           data-author="" >
            <span class="post-title" title="ideavim 使用百分号%支持xml的对应标签跳转">ideavim 使用百分号%支持xml的对应标签跳转</span>
            <span class="post-date" title="2023-06-17 16:09:00">2023/06/17</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2023/05/17/mac-raycast/"
           data-tag="mac,efficiency"
           data-author="" >
            <span class="post-title" title="Raycast 最强效率软件推荐">Raycast 最强效率软件推荐</span>
            <span class="post-date" title="2023-05-17 17:45:00">2023/05/17</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2022/08/01/%5BJava%5Doptimize-request-processing-speed-by-completablefuture/"
           data-tag="java,concurrent"
           data-author="" >
            <span class="post-title" title="[Java]通过 CompletableFuture 实现异步多线程优化请求处理速度">[Java]通过 CompletableFuture 实现异步多线程优化请求处理速度</span>
            <span class="post-date" title="2022-08-01 20:06:14">2022/08/01</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2022/08/01/reducing-local-springcloud-base-on-nacos-and-gray-release/"
           data-tag="java,k8s,nacos,springcloud,gray-release"
           data-author="" >
            <span class="post-title" title="基于 nacos/灰度发布 实现减少本地启动微服务数量的实践">基于 nacos/灰度发布 实现减少本地启动微服务数量的实践</span>
            <span class="post-date" title="2022-08-01 20:06:14">2022/08/01</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2022/07/27/springboot-graceful-shutdown-based-on-nacos2-and-k8s/"
           data-tag="java,k8s,nacos,springcloud"
           data-author="" >
            <span class="post-title" title="基于 nacos/springcloud/k8s 的不停机服务更新[graceful shutdown]">基于 nacos/springcloud/k8s 的不停机服务更新[graceful shutdown]</span>
            <span class="post-date" title="2022-07-27 15:35:39">2022/07/27</span>
        </a>
        
        
        
        <a  class="全部文章 大前端 "
           href="/2022/06/24/el-drawer-drag-width/"
           data-tag="ElementUI,Vue"
           data-author="" >
            <span class="post-title" title="el-drawer 实现鼠标拖拽宽度[ElementUI]">el-drawer 实现鼠标拖拽宽度[ElementUI]</span>
            <span class="post-date" title="2022-06-24 19:38:00">2022/06/24</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2021/09/26/spring-cloud-skywalking/"
           data-tag="java,SpringCloud,SkyWalking"
           data-author="" >
            <span class="post-title" title="SpringCloud系列之接入SkyWalking进行链路追踪和日志收集">SpringCloud系列之接入SkyWalking进行链路追踪和日志收集</span>
            <span class="post-date" title="2021-09-26 18:08:00">2021/09/26</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2021/07/01/mac-yabai/"
           data-tag="mac,window-manager"
           data-author="" >
            <span class="post-title" title="yabai">yabai</span>
            <span class="post-date" title="2021-07-01 11:00:07">2021/07/01</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2020/12/28/3-hexo-add-icon/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo添加自定义图标">3-hexo添加自定义图标</span>
            <span class="post-date" title="2020-12-28 22:00:00">2020/12/28</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2020/10/20/know-javascript-promise/"
           data-tag="javascript"
           data-author="" >
            <span class="post-title" title="一文看懂JavaScript中的Promise">一文看懂JavaScript中的Promise</span>
            <span class="post-date" title="2020-10-20 19:43:44">2020/10/20</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2020/09/01/Docker-summary/"
           data-tag="linux,docker"
           data-author="" >
            <span class="post-title" title="Docker 技术整理">Docker 技术整理</span>
            <span class="post-date" title="2020-09-01 22:11:00">2020/09/01</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2020/05/23/3-hexo-comment/"
           data-tag="3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo评论设置">3-hexo评论设置</span>
            <span class="post-date" title="2020-05-23 22:26:23">2020/05/23</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2019/11/12/3-hexo-support-mermaid/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo支持mermaid图表">3-hexo支持mermaid图表</span>
            <span class="post-date" title="2019-11-12 09:55:37">2019/11/12</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2019/10/08/3-hexo-add-music/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo 添加音乐插件">3-hexo 添加音乐插件</span>
            <span class="post-date" title="2019-10-08 10:44:30">2019/10/08</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2019/09/24/3-hexo-jsfiddle/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo支持jsfiddle渲染">3-hexo支持jsfiddle渲染</span>
            <span class="post-date" title="2019-09-24 09:59:37">2019/09/24</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2019/09/24/3-hexo-toc/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo文章内toc生成">3-hexo文章内toc生成</span>
            <span class="post-date" title="2019-09-24 09:48:20">2019/09/24</span>
        </a>
        
        
        <a  class="全部文章 读书 阅读笔记 "
           href="/2019/06/09/misfortune-intellectual/"
           data-tag="reading"
           data-author="" >
            <span class="post-title" title="[记]《知识分子的不幸》-王小波">[记]《知识分子的不幸》-王小波</span>
            <span class="post-date" title="2019-06-09 21:31:09">2019/06/09</span>
        </a>
        
        
        <a  class="全部文章 读书 阅读笔记 "
           href="/2019/05/02/to-live/"
           data-tag="reading,活着"
           data-author="" >
            <span class="post-title" title="人们在一本叫《活着》的书中纷纷死去">人们在一本叫《活着》的书中纷纷死去</span>
            <span class="post-date" title="2019-05-02 17:46:16">2019/05/02</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2018/09/08/shell-command/"
           data-tag="linux,shell"
           data-author="" >
            <span class="post-title" title="shell速查表">shell速查表</span>
            <span class="post-date" title="2018-09-08 11:48:24">2018/09/08</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2018/02/08/nginx-config-commands/"
           data-tag="nginx"
           data-author="" >
            <span class="post-title" title="nginx常用配置和命令">nginx常用配置和命令</span>
            <span class="post-date" title="2018-02-08 09:19:09">2018/02/08</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2017/12/13/Mac-BetterTouchTool/"
           data-tag="mac,efficiency"
           data-author="" >
            <span class="post-title" title="Mac神器-BTT(BetterTouchTool)不完全教程">Mac神器-BTT(BetterTouchTool)不完全教程</span>
            <span class="post-date" title="2017-12-13 17:04:25">2017/12/13</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2017/11/27/java-grammatical-sugar/"
           data-tag="java"
           data-author="" >
            <span class="post-title" title="[转]谈谈Java中的语法糖">[转]谈谈Java中的语法糖</span>
            <span class="post-date" title="2017-11-27 22:51:45">2017/11/27</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2017/11/09/PostgreSQL%E4%BA%8B%E7%89%A9%E5%8F%8A%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB/"
           data-tag="PostgreSQL"
           data-author="" >
            <span class="post-title" title="PostgreSQL事务及隔离级别">PostgreSQL事务及隔离级别</span>
            <span class="post-date" title="2017-11-09 00:07:33">2017/11/09</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/10/20/linux%E4%B8%8B%E4%BF%AE%E6%94%B9%E6%8C%89%E9%94%AEESC%3C=%3ECAPSLOCK%E5%92%8CControl=%3EALT_R/"
           data-tag="linux,vim,keybord,emacs"
           data-author="" >
            <span class="post-title" title="linux下修改按键ESC&lt;=&gt;CAPSLOCK和Control=&gt;ALT_R">linux下修改按键ESC&lt;=&gt;CAPSLOCK和Control=&gt;ALT_R</span>
            <span class="post-date" title="2017-10-20 17:38:49">2017/10/20</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/25/ascii-ansi-unicode-utf-8/"
           data-tag="encoding"
           data-author="" >
            <span class="post-title" title="[转]字符编解码的故事（ASCII，ANSI，Unicode，Utf-8区别）">[转]字符编解码的故事（ASCII，ANSI，Unicode，Utf-8区别）</span>
            <span class="post-date" title="2017-09-25 19:15:00">2017/09/25</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2017/09/25/%E6%90%AD%E5%BB%BAdubbo+zookeeper%E5%B9%B3%E5%8F%B0/"
           data-tag="dubbo,zookeeper"
           data-author="" >
            <span class="post-title" title="搭建dubbo+zookeeper平台">搭建dubbo+zookeeper平台</span>
            <span class="post-date" title="2017-09-25 16:29:07">2017/09/25</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/25/docker-errors/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker报错集锦">docker报错集锦</span>
            <span class="post-date" title="2017-09-25 10:03:50">2017/09/25</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/09/21/hexo-fragment_cache/"
           data-tag="hexo,fragment_cache"
           data-author="" >
            <span class="post-title" title="Hexo加速渲染速度之fragment_cache">Hexo加速渲染速度之fragment_cache</span>
            <span class="post-date" title="2017-09-21 19:34:37">2017/09/21</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/09/21/bf-cache/"
           data-tag="浏览器,js"
           data-author="" >
            <span class="post-title" title="[转]浏览器前进/后退缓存（BF Cache）">[转]浏览器前进/后退缓存（BF Cache）</span>
            <span class="post-date" title="2017-09-21 15:35:24">2017/09/21</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/09/21/iphone-bf-no-run-js/"
           data-tag="js"
           data-author="" >
            <span class="post-title" title="解决iphone下后退不执行js的问题">解决iphone下后退不执行js的问题</span>
            <span class="post-date" title="2017-09-21 15:25:32">2017/09/21</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/19/CentOS7%E4%BD%BF%E7%94%A8Firewalld/"
           data-tag="firewall"
           data-author="" >
            <span class="post-title" title="CentOS7使用Firewalld">CentOS7使用Firewalld</span>
            <span class="post-date" title="2017-09-19 09:53:53">2017/09/19</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/18/docker-save-export/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker备份恢复之save与export">docker备份恢复之save与export</span>
            <span class="post-date" title="2017-09-18 22:38:52">2017/09/18</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/11/sudo%E5%91%BD%E4%BB%A4%E5%85%8D%E5%AF%86%E7%A0%81%E8%AE%BE%E7%BD%AE/"
           data-tag="linux"
           data-author="" >
            <span class="post-title" title="sudo命令免密码设置">sudo命令免密码设置</span>
            <span class="post-date" title="2017-09-11 09:30:55">2017/09/11</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/09/06/build-Maven-Nexus/"
           data-tag="java,maven,nexus"
           data-author="" >
            <span class="post-title" title="搭建Maven私服-Nexus">搭建Maven私服-Nexus</span>
            <span class="post-date" title="2017-09-06 23:01:31">2017/09/06</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2017/08/04/mybatis-Mapper/"
           data-tag="mybatis"
           data-author="" >
            <span class="post-title" title="Mybatis常用Mapper语句">Mybatis常用Mapper语句</span>
            <span class="post-date" title="2017-08-04 15:54:47">2017/08/04</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/07/05/MathJax-pjax/"
           data-tag="mathjax,pjax"
           data-author="" >
            <span class="post-title" title="MathJax适配Pjax">MathJax适配Pjax</span>
            <span class="post-date" title="2017-07-05 19:24:10">2017/07/05</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/07/05/3-hexo-mathjax/"
           data-tag="mathjax"
           data-author="" >
            <span class="post-title" title="3-hexo配置MathJax数学公式渲染">3-hexo配置MathJax数学公式渲染</span>
            <span class="post-date" title="2017-07-05 15:09:42">2017/07/05</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/07/03/CentOS7-anonymous-Samba/"
           data-tag="samba"
           data-author="" >
            <span class="post-title" title="CentOS7安装配置匿名访问Samba">CentOS7安装配置匿名访问Samba</span>
            <span class="post-date" title="2017-07-03 19:40:14">2017/07/03</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/06/26/gitment/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="完美替代多说-gitment">完美替代多说-gitment</span>
            <span class="post-date" title="2017-06-26 12:08:13">2017/06/26</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/06/01/vim-paste/"
           data-tag="vim"
           data-author="" >
            <span class="post-title" title="解决粘贴到vim缩进错乱问题">解决粘贴到vim缩进错乱问题</span>
            <span class="post-date" title="2017-06-01 19:45:24">2017/06/01</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/06/01/entering-docker/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="进入docker容器命令制作">进入docker容器命令制作</span>
            <span class="post-date" title="2017-06-01 17:25:11">2017/06/01</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2017/05/24/tale-build-experience/"
           data-tag="tale"
           data-author="" >
            <span class="post-title" title="tale博客搭建及体验">tale博客搭建及体验</span>
            <span class="post-date" title="2017-05-24 11:29:30">2017/05/24</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/23/docker-data-manager/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker数据管理">docker数据管理</span>
            <span class="post-date" title="2017-05-23 21:43:06">2017/05/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/23/docker-container/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker容器">docker容器</span>
            <span class="post-date" title="2017-05-23 21:29:38">2017/05/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/23/docker-registry/"
           data-tag="docker,docker仓库"
           data-author="" >
            <span class="post-title" title="docker仓库">docker仓库</span>
            <span class="post-date" title="2017-05-23 21:15:52">2017/05/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/23/linux-command-57-sort/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（58）: sort">每天一个linux命令（58）: sort</span>
            <span class="post-date" title="2017-05-23 11:44:12">2017/05/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/23/CentOS-DNS-GW-IP/"
           data-tag="运维,centos"
           data-author="" >
            <span class="post-title" title="CentOS修改DNS/GW/IP">CentOS修改DNS/GW/IP</span>
            <span class="post-date" title="2017-05-23 09:53:52">2017/05/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/22/Dockerfile/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="Dockerfile指令详解">Dockerfile指令详解</span>
            <span class="post-date" title="2017-05-22 19:11:42">2017/05/22</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/19/docker-image/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker镜像">docker镜像</span>
            <span class="post-date" title="2017-05-19 16:47:33">2017/05/19</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/19/docker-first/"
           data-tag="docker"
           data-author="" >
            <span class="post-title" title="docker初体验">docker初体验</span>
            <span class="post-date" title="2017-05-19 16:32:23">2017/05/19</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/05/17/linux%E6%97%A0%E6%8D%9F%E8%B0%83%E6%95%B4%E5%88%86%E5%8C%BA%E5%A4%A7%E5%B0%8F/"
           data-tag="运维,磁盘分区"
           data-author="" >
            <span class="post-title" title="linux无损调整分区大小">linux无损调整分区大小</span>
            <span class="post-date" title="2017-05-17 22:00:42">2017/05/17</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2017/05/16/git-log/"
           data-tag="git"
           data-author="" >
            <span class="post-title" title="Git统计操作">Git统计操作</span>
            <span class="post-date" title="2017-05-16 09:26:11">2017/05/16</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/04/25/%E8%A7%A3%E5%86%B3linux%E4%B8%8Bzip%E6%96%87%E4%BB%B6%E8%A7%A3%E5%8E%8B%E4%B9%B1%E7%A0%81/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="解决linux下zip文件解压乱码">解决linux下zip文件解压乱码</span>
            <span class="post-date" title="2017-04-25 09:10:40">2017/04/25</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2017/04/22/encryption-algorithm/"
           data-tag="encryption"
           data-author="" >
            <span class="post-title" title="加密算法简介">加密算法简介</span>
            <span class="post-date" title="2017-04-22 09:30:41">2017/04/22</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/04/21/jsp-use-record/"
           data-tag="jsp,jstl"
           data-author="" >
            <span class="post-title" title="JSP操作记录">JSP操作记录</span>
            <span class="post-date" title="2017-04-21 11:22:12">2017/04/21</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2017/04/15/SpringMVC-implementation-process/"
           data-tag="java,spring,springmvc"
           data-author="" >
            <span class="post-title" title="[转]SpringMVC执行流程及源码解析">[转]SpringMVC执行流程及源码解析</span>
            <span class="post-date" title="2017-04-15 10:22:05">2017/04/15</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2017/04/14/postgres-sql-use/"
           data-tag="postgres,sql"
           data-author="" >
            <span class="post-title" title="PostgreSQL常用SQL操作">PostgreSQL常用SQL操作</span>
            <span class="post-date" title="2017-04-14 16:37:24">2017/04/14</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2017/03/30/deepin-linux/"
           data-tag="运维,deepin"
           data-author="" >
            <span class="post-title" title="deepin系统使用记录">deepin系统使用记录</span>
            <span class="post-date" title="2017-03-30 18:58:50">2017/03/30</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/27/hexo-error-collection/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="hexo报错合集">hexo报错合集</span>
            <span class="post-date" title="2017-03-27 19:40:42">2017/03/27</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/24/3-hexo-shortcuts/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo快捷键说明">3-hexo快捷键说明</span>
            <span class="post-date" title="2017-03-24 16:45:31">2017/03/24</span>
        </a>
        
        
        <a  class="全部文章 工具 "
           href="/2017/03/23/the-third-comment/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="关于第三方评论系统">关于第三方评论系统</span>
            <span class="post-date" title="2017-03-23 11:59:50">2017/03/23</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/17/windows-hexo/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="windows环境下使用hexo搭建blog平台">windows环境下使用hexo搭建blog平台</span>
            <span class="post-date" title="2017-03-17 14:02:55">2017/03/17</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/16/npm/"
           data-tag="node"
           data-author="" >
            <span class="post-title" title="npm使用介绍">npm使用介绍</span>
            <span class="post-date" title="2017-03-16 20:09:48">2017/03/16</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/14/Hexo-RSS-Sitemap/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="为Hexo添加RSS和Sitemap">为Hexo添加RSS和Sitemap</span>
            <span class="post-date" title="2017-03-14 09:44:29">2017/03/14</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/13/3-hexo-homepage/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo配置首页">3-hexo配置首页</span>
            <span class="post-date" title="2017-03-13 09:56:07">2017/03/13</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/09/busuanzi-pjax/"
           data-tag="hexo,jQuery"
           data-author="" >
            <span class="post-title" title="不蒜子适配pjax">不蒜子适配pjax</span>
            <span class="post-date" title="2017-03-09 20:15:51">2017/03/09</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/09/duoshuo-pjax/"
           data-tag="hexo,jQuery"
           data-author="" >
            <span class="post-title" title="多说适配pjax">多说适配pjax</span>
            <span class="post-date" title="2017-03-09 19:50:45">2017/03/09</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/09/hexo-wordcount/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="Hexo加入字数统计WordCount">Hexo加入字数统计WordCount</span>
            <span class="post-date" title="2017-03-09 16:57:10">2017/03/09</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/08/font-develop-rule/"
           data-tag="translation"
           data-author="" >
            <span class="post-title" title="前端页面开发规范">前端页面开发规范</span>
            <span class="post-date" title="2017-03-08 08:58:21">2017/03/08</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/08/understanding-the-critical-rendering-path/"
           data-tag="translation"
           data-author="" >
            <span class="post-title" title="[译]理解浏览器关键渲染路径">[译]理解浏览器关键渲染路径</span>
            <span class="post-date" title="2017-03-08 08:58:21">2017/03/08</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/03/07/3-hexo/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="Hexo主题3-hexo">Hexo主题3-hexo</span>
            <span class="post-date" title="2017-03-07 11:15:50">2017/03/07</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/03/06/Vim-command/"
           data-tag="vim"
           data-author="" >
            <span class="post-title" title="Vim命令速查表">Vim命令速查表</span>
            <span class="post-date" title="2017-03-06 11:23:36">2017/03/06</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/03/06/linux-ftp/"
           data-tag="ftp"
           data-author="" >
            <span class="post-title" title="如何在linux中搭建ftp服务">如何在linux中搭建ftp服务</span>
            <span class="post-date" title="2017-03-06 08:47:48">2017/03/06</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/03/05/linux-command-57-sftp/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（57）: sftp">每天一个linux命令（57）: sftp</span>
            <span class="post-date" title="2017-03-05 16:29:38">2017/03/05</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/03/04/AngularJs/"
           data-tag="AngularJs"
           data-author="" >
            <span class="post-title" title="AngularJs快速入门">AngularJs快速入门</span>
            <span class="post-date" title="2017-03-04 08:40:58">2017/03/04</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/02/28/3-hexo-multiple-author/"
           data-tag="hexo,3-hexo"
           data-author="" >
            <span class="post-title" title="3-hexo多作者模式">3-hexo多作者模式</span>
            <span class="post-date" title="2017-02-28 10:55:31">2017/02/28</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/02/25/hexo-create-404-page/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="Hexo创建404页面">Hexo创建404页面</span>
            <span class="post-date" title="2017-02-25 15:18:39">2017/02/25</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2017/02/24/hexo-top-sort/"
           data-tag="hexo"
           data-author="" >
            <span class="post-title" title="Hexo置顶及排序问题">Hexo置顶及排序问题</span>
            <span class="post-date" title="2017-02-24 15:50:38">2017/02/24</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2017/02/21/the-introduction-of-memory-leak-what-why-and-how/"
           data-tag="java,translation"
           data-author="" >
            <span class="post-title" title="[译]Java内存泄露介绍">[译]Java内存泄露介绍</span>
            <span class="post-date" title="2017-02-21 15:05:39">2017/02/21</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/02/20/linux-command-56-tailf/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（56）: tailf">每天一个linux命令（56）: tailf</span>
            <span class="post-date" title="2017-02-20 15:11:06">2017/02/20</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2017/02/08/pjax/"
           data-tag="jQuery"
           data-author="" >
            <span class="post-title" title="pjax用法">pjax用法</span>
            <span class="post-date" title="2017-02-08 20:18:54">2017/02/08</span>
        </a>
        
        
        <a  class="全部文章 读书 书单 "
           href="/2017/01/31/reading-list/"
           data-tag="reading"
           data-author="" >
            <span class="post-title" title="reading-list">reading-list</span>
            <span class="post-date" title="2017-01-31 15:29:32">2017/01/31</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/23/linux-command/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令">每天一个linux命令</span>
            <span class="post-date" title="2017-01-23 11:41:48">2017/01/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/23/linux-command-55-crontab/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（55）: crontab">每天一个linux命令（55）: crontab</span>
            <span class="post-date" title="2017-01-23 10:44:50">2017/01/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/22/linux-command-54-at/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（54）: at">每天一个linux命令（54）: at</span>
            <span class="post-date" title="2017-01-22 10:23:44">2017/01/22</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/21/linux-command-53-watch/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（53）: watch">每天一个linux命令（53）: watch</span>
            <span class="post-date" title="2017-01-21 10:12:30">2017/01/21</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/20/linux-command-52-ps/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（52）: ps">每天一个linux命令（52）: ps</span>
            <span class="post-date" title="2017-01-20 09:46:16">2017/01/20</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/19/linux-command-51-wc/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（51）: wc">每天一个linux命令（51）: wc</span>
            <span class="post-date" title="2017-01-19 09:33:59">2017/01/19</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/18/linux-command-50-grep/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（50）: grep">每天一个linux命令（50）: grep</span>
            <span class="post-date" title="2017-01-18 10:12:46">2017/01/18</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/17/linux-command-49-cal/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（49）: cal">每天一个linux命令（49）: cal</span>
            <span class="post-date" title="2017-01-17 09:38:32">2017/01/17</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/16/linux-command-48-date/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（48）: date">每天一个linux命令（48）: date</span>
            <span class="post-date" title="2017-01-16 14:39:27">2017/01/16</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/15/linux-command-47-diff/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（47）: diff">每天一个linux命令（47）: diff</span>
            <span class="post-date" title="2017-01-15 14:08:08">2017/01/15</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/14/linux-command-46-ln/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（46）: ln">每天一个linux命令（46）: ln</span>
            <span class="post-date" title="2017-01-14 11:00:33">2017/01/14</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/13/linux-command-45-scp/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（45）: scp">每天一个linux命令（45）: scp</span>
            <span class="post-date" title="2017-01-13 10:53:48">2017/01/13</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/12/linux-command-44-rcp/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（44）: rcp">每天一个linux命令（44）: rcp</span>
            <span class="post-date" title="2017-01-12 10:36:06">2017/01/12</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/12/linux-command-43-telnet/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（43）: telnet">每天一个linux命令（43）: telnet</span>
            <span class="post-date" title="2017-01-12 09:24:01">2017/01/12</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/11/linux-command-42-ss/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（42）: ss">每天一个linux命令（42）: ss</span>
            <span class="post-date" title="2017-01-11 10:34:47">2017/01/11</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/10/linux-command-41-netstat/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（41）: netstat">每天一个linux命令（41）: netstat</span>
            <span class="post-date" title="2017-01-10 09:54:16">2017/01/10</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/09/linux-command-40-traceroute/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（40）: traceroute">每天一个linux命令（40）: traceroute</span>
            <span class="post-date" title="2017-01-09 10:56:53">2017/01/09</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/08/linux-command-39-ping/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（39）: ping">每天一个linux命令（39）: ping</span>
            <span class="post-date" title="2017-01-08 10:24:50">2017/01/08</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/07/linux-command-38-route/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（38）: route">每天一个linux命令（38）: route</span>
            <span class="post-date" title="2017-01-07 10:16:34">2017/01/07</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/06/linux-command-37-ifconfig/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（37）: ifconfig">每天一个linux命令（37）: ifconfig</span>
            <span class="post-date" title="2017-01-06 09:57:01">2017/01/06</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/05/linux-command-36-lsof/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（36）: lsof">每天一个linux命令（36）: lsof</span>
            <span class="post-date" title="2017-01-05 10:28:13">2017/01/05</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/04/linux-command-35-iostat/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（35）: iostat">每天一个linux命令（35）: iostat</span>
            <span class="post-date" title="2017-01-04 10:10:02">2017/01/04</span>
        </a>
        
        
        <a  class="全部文章 读书 阅读笔记 "
           href="/2017/01/03/Fortress-Besieged/"
           data-tag="reading"
           data-author="" >
            <span class="post-title" title="人生若只如初见-《围城》">人生若只如初见-《围城》</span>
            <span class="post-date" title="2017-01-03 11:27:04">2017/01/03</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/03/linux-command-34-vmstat/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（34）: vmstat">每天一个linux命令（34）: vmstat</span>
            <span class="post-date" title="2017-01-03 09:46:57">2017/01/03</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/02/linux-command-33-free/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（33）: free">每天一个linux命令（33）: free</span>
            <span class="post-date" title="2017-01-02 21:43:26">2017/01/02</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2017/01/01/linux-command-32-top/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（32）: top">每天一个linux命令（32）: top</span>
            <span class="post-date" title="2017-01-01 19:31:28">2017/01/01</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/31/linux-command-31-du/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（31）: du">每天一个linux命令（31）: du</span>
            <span class="post-date" title="2016-12-31 14:36:01">2016/12/31</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/30/linux-command-30-df/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（30）: df">每天一个linux命令（30）: df</span>
            <span class="post-date" title="2016-12-30 14:23:31">2016/12/30</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/29/linux-command-29-group/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（29）: /etc/group文件详解">每天一个linux命令（29）: /etc/group文件详解</span>
            <span class="post-date" title="2016-12-29 14:13:05">2016/12/29</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/28/linux-command-28-chown/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（28）: chown">每天一个linux命令（28）: chown</span>
            <span class="post-date" title="2016-12-28 09:51:30">2016/12/28</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/27/linux-command-27-chgrp/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（27）: chgrp">每天一个linux命令（27）: chgrp</span>
            <span class="post-date" title="2016-12-27 09:40:06">2016/12/27</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/26/linux-command-26-chmod/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（26）: chmod">每天一个linux命令（26）: chmod</span>
            <span class="post-date" title="2016-12-26 20:22:43">2016/12/26</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/25/linux-command-25-gzip/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（25）: gzip">每天一个linux命令（25）: gzip</span>
            <span class="post-date" title="2016-12-25 16:55:15">2016/12/25</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2016/12/24/git-reset/"
           data-tag="Git"
           data-author="" >
            <span class="post-title" title="Git之reset揭秘">Git之reset揭秘</span>
            <span class="post-date" title="2016-12-24 11:19:24">2016/12/24</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/24/linux-command-24-tar/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（24）: tar">每天一个linux命令（24）: tar</span>
            <span class="post-date" title="2016-12-24 10:24:17">2016/12/24</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2016/12/23/git-master/"
           data-tag="Git"
           data-author="" >
            <span class="post-title" title="Git操作之高手过招">Git操作之高手过招</span>
            <span class="post-date" title="2016-12-23 10:59:01">2016/12/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/23/linux-command-23-%E7%94%A8SecureCRT%E6%9D%A5%E4%B8%8A%E4%BC%A0%E5%92%8C%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（23）: 用SecureCRT来上传和下载文件">每天一个linux命令（23）: 用SecureCRT来上传和下载文件</span>
            <span class="post-date" title="2016-12-23 09:48:15">2016/12/23</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/22/linux-command-22-find%E5%91%BD%E4%BB%A4%E7%9A%84%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（22）: find命令的参数详解">每天一个linux命令（22）: find命令的参数详解</span>
            <span class="post-date" title="2016-12-22 11:44:14">2016/12/22</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2016/12/21/git-ssh-https-verify-configuration/"
           data-tag="Git"
           data-author="" >
            <span class="post-title" title="Git之SSH与HTTPS免密码配置">Git之SSH与HTTPS免密码配置</span>
            <span class="post-date" title="2016-12-21 15:31:55">2016/12/21</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/21/linux-command-21-find%E5%91%BD%E4%BB%A4%E4%B9%8Bxargs/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（21）: find命令之xargs">每天一个linux命令（21）: find命令之xargs</span>
            <span class="post-date" title="2016-12-21 11:08:01">2016/12/21</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/20/linux-command-20-find%E5%91%BD%E4%BB%A4%E4%B9%8Bexec/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（20）: find命令之exec">每天一个linux命令（20）: find命令之exec</span>
            <span class="post-date" title="2016-12-20 10:47:32">2016/12/20</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/19/linux-command-19-find%E5%91%BD%E4%BB%A4%E6%A6%82%E8%A7%88/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（19）: find命令概览">每天一个linux命令（19）: find命令概览</span>
            <span class="post-date" title="2016-12-19 15:19:10">2016/12/19</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/18/linux-command-18-locate/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（18）: locate">每天一个linux命令（18）: locate</span>
            <span class="post-date" title="2016-12-18 15:09:28">2016/12/18</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/17/linux-command-17-whereis/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（17）: whereis">每天一个linux命令（17）: whereis</span>
            <span class="post-date" title="2016-12-17 10:42:58">2016/12/17</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/16/linux-command-16-which/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（16）: which">每天一个linux命令（16）: which</span>
            <span class="post-date" title="2016-12-16 11:25:49">2016/12/16</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/15/linux-command-15-tail/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（15）: tail">每天一个linux命令（15）: tail</span>
            <span class="post-date" title="2016-12-15 15:00:26">2016/12/15</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/14/linux-command-14-head/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（14）: head">每天一个linux命令（14）: head</span>
            <span class="post-date" title="2016-12-14 14:35:49">2016/12/14</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/13/linux-command-13-less/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（13）: less">每天一个linux命令（13）: less</span>
            <span class="post-date" title="2016-12-13 21:46:14">2016/12/13</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/12/linux-command-12-more/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（12）: more">每天一个linux命令（12）: more</span>
            <span class="post-date" title="2016-12-12 21:29:39">2016/12/12</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/11/linux-command-11-nl/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（11）: nl">每天一个linux命令（11）: nl</span>
            <span class="post-date" title="2016-12-11 21:11:48">2016/12/11</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/10/linux-command-10-cat/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（10）: cat">每天一个linux命令（10）: cat</span>
            <span class="post-date" title="2016-12-10 10:52:50">2016/12/10</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/09/linux-command-9-touch/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（9）: touch">每天一个linux命令（9）: touch</span>
            <span class="post-date" title="2016-12-09 07:15:12">2016/12/09</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/08/linux-command-8-cp/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（8）: cp">每天一个linux命令（8）: cp</span>
            <span class="post-date" title="2016-12-08 16:31:43">2016/12/08</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/07/linux-command-7-mv/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（7）: mv">每天一个linux命令（7）: mv</span>
            <span class="post-date" title="2016-12-07 15:55:20">2016/12/07</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/06/linux-command-6-rmdir/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（6）: rmdir">每天一个linux命令（6）: rmdir</span>
            <span class="post-date" title="2016-12-06 15:24:32">2016/12/06</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/05/linux-command-5-rm/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（5）: rm">每天一个linux命令（5）: rm</span>
            <span class="post-date" title="2016-12-05 13:40:38">2016/12/05</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/04/linux-command-4-mkdir/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（4）: mkdir">每天一个linux命令（4）: mkdir</span>
            <span class="post-date" title="2016-12-04 09:27:32">2016/12/04</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/03/linux-command-3-pwd/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（3）: pwd">每天一个linux命令（3）: pwd</span>
            <span class="post-date" title="2016-12-03 09:15:52">2016/12/03</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/02/linux-command-2-cd/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（2）: cd">每天一个linux命令（2）: cd</span>
            <span class="post-date" title="2016-12-02 11:04:55">2016/12/02</span>
        </a>
        
        
        <a  class="全部文章 运维 "
           href="/2016/12/01/linux-command-1-ls/"
           data-tag="linux命令"
           data-author="" >
            <span class="post-title" title="每天一个linux命令（1）: ls">每天一个linux命令（1）: ls</span>
            <span class="post-date" title="2016-12-01 09:38:59">2016/12/01</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2016/11/23/jQuery-checkbox-radio-select/"
           data-tag="jQuery"
           data-author="" >
            <span class="post-title" title="jQuery之checkbox|radio|select操作">jQuery之checkbox|radio|select操作</span>
            <span class="post-date" title="2016-11-23 16:19:34">2016/11/23</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2016/11/22/jQuery-selector/"
           data-tag="jQuery"
           data-author="" >
            <span class="post-title" title="jQuery选择器与节点操作">jQuery选择器与节点操作</span>
            <span class="post-date" title="2016-11-22 17:11:48">2016/11/22</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2016/11/05/idea-shortcuts/"
           data-tag="IntellijIDEA"
           data-author="" >
            <span class="post-title" title="idea常用快捷键">idea常用快捷键</span>
            <span class="post-date" title="2016-11-05 15:22:48">2016/11/05</span>
        </a>
        
        
        <a  class="全部文章 后端 "
           href="/2016/10/24/web-xml/"
           data-tag="java,javaee"
           data-author="" >
            <span class="post-title" title="web.xml详解">web.xml详解</span>
            <span class="post-date" title="2016-10-24 10:10:45">2016/10/24</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2016/10/23/hexo-git-server-blog/"
           data-tag="hexo,Git"
           data-author="" >
            <span class="post-title" title="Hexo+Git服务器搭建blog">Hexo+Git服务器搭建blog</span>
            <span class="post-date" title="2016-10-23 09:24:03">2016/10/23</span>
        </a>
        
        
        <a  class="全部文章 工具 hexo "
           href="/2016/10/22/hexo-gitHub-pages-create-own-blog/"
           data-tag="hexo,Git,GitHub"
           data-author="" >
            <span class="post-title" title="Hexo+GitHub Pages搭建属于自己的blog">Hexo+GitHub Pages搭建属于自己的blog</span>
            <span class="post-date" title="2016-10-22 21:24:05">2016/10/22</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2016/10/22/set-up-git-server-on-vps/"
           data-tag="Git"
           data-author="" >
            <span class="post-title" title="搭建Git服务器">搭建Git服务器</span>
            <span class="post-date" title="2016-10-22 20:08:04">2016/10/22</span>
        </a>
        
        
        <a  class="全部文章 工具 git "
           href="/2016/10/13/contributing-to-open-source-on-github/"
           data-tag="Git,GitHub"
           data-author="" >
            <span class="post-title" title="如何给GitHub上的项目贡献代码">如何给GitHub上的项目贡献代码</span>
            <span class="post-date" title="2016-10-13 15:44:07">2016/10/13</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2016/10/12/PostgreSQL-2/"
           data-tag="PostgreSQL"
           data-author="" >
            <span class="post-title" title="PostgreSQL常用操作">PostgreSQL常用操作</span>
            <span class="post-date" title="2016-10-12 20:27:07">2016/10/12</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2016/10/12/PostgreSQL-1/"
           data-tag="PostgreSQL"
           data-author="" >
            <span class="post-title" title="PostgreSQL初体验">PostgreSQL初体验</span>
            <span class="post-date" title="2016-10-12 19:49:40">2016/10/12</span>
        </a>
        
        
        <a  class="全部文章 数据库 "
           href="/2016/10/12/PostgreSQL-3/"
           data-tag="PostgreSQL"
           data-author="" >
            <span class="post-title" title="PostgreSQL的介绍与安装">PostgreSQL的介绍与安装</span>
            <span class="post-date" title="2016-10-12 15:44:16">2016/10/12</span>
        </a>
        
        
        <a  class="全部文章 大前端 "
           href="/2016/10/05/FreeMarker/"
           data-tag="java,freemarker"
           data-author="" >
            <span class="post-title" title="FreeMarker语法详解">FreeMarker语法详解</span>
            <span class="post-date" title="2016-10-05 11:58:50">2016/10/05</span>
        </a>
        
        
        <a  class="全部文章 工具 软件记录 "
           href="/2016/10/04/regular-expression/"
           data-tag="regex"
           data-author="" >
            <span class="post-title" title="正则表达式详解">正则表达式详解</span>
            <span class="post-date" title="2016-10-04 09:41:40">2016/10/04</span>
        </a>
        
        <div id="no-item-tips">

        </div>
    </nav>
    <div id="outline-list">
    </div>
</div>

    </div>
    <div class="hide-list">
        <div class="semicircle" data-title="切换全屏 快捷键 s">
            <div class="brackets first"><</div>
            <div class="brackets">&gt;</div>
        </div>
    </div>
</aside>
<div id="post">
    <div class="pjax">
        <article id="post-Docker-技术整理" class="article article-type-post" itemscope itemprop="blogPost">
    
        <h1 class="article-title">Docker 技术整理</h1>
    
    <div class="article-meta">
        
        
        
        <span class="book">
            <i class="iconfont icon-category"></i>
            
            
            <a  data-rel="运维">运维</a>
            
        </span>
        
        
        <span class="tag">
            <i class="iconfont icon-tag"></i>
            
            <a class="color1">linux</a>
            
            <a class="color2">docker</a>
            
        </span>
        
    </div>
    <div class="article-meta">
        
            发布时间 : <time class="date" title='最后更新: 2024-08-30 12:34:29'>2020-09-01 22:11</time>
        
    </div>
    <div class="article-meta">
        
        <span>字数:7.9k</span>
        
        
        <span id="busuanzi_container_page_pv">
            阅读 :<span id="busuanzi_value_page_pv">
                <span class="count-comment">
                    <span class="spinner">
                      <div class="cube1"></div>
                      <div class="cube2"></div>
                    </span>
                </span>
            </span>
        </span>
        
        
        <span class="top-comment" title="跳转至评论区">
            <a href="#comments">
                评论:<span class="count-comment">
                    <span class="spinner">
                      <div class="cube1"></div>
                      <div class="cube2"></div>
                    </span>
                </span>
            </a>
        </span>
        
    </div>
    
    <div class="toc-ref">
    
        <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E3%80%81%E6%A6%82%E8%BF%B0"><span class="toc-text">一、概述</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-1-%E4%BB%80%E4%B9%88%E6%98%AFdocker"><span class="toc-text">1.1 什么是docker</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-2-%E5%92%8C%E4%BC%A0%E7%BB%9F%E8%99%9A%E6%8B%9F%E6%9C%BA%E7%9A%84%E5%8C%BA%E5%88%AB"><span class="toc-text">1.2 和传统虚拟机的区别</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-3-%E7%9B%B8%E5%85%B3%E9%93%BE%E6%8E%A5"><span class="toc-text">1.3 相关链接</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%8C%E3%80%81Image%E9%95%9C%E5%83%8F"><span class="toc-text">二、Image镜像</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#2-1-%E4%BB%8B%E7%BB%8D"><span class="toc-text">2.1 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-2-%E4%BB%8E%E4%BB%93%E5%BA%93%E4%B8%8B%E8%BD%BD%E9%95%9C%E5%83%8F"><span class="toc-text">2.2 从仓库下载镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-3-%E5%88%97%E5%87%BA%E6%9C%AC%E5%9C%B0%E9%95%9C%E5%83%8F"><span class="toc-text">2.3 列出本地镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-4-Dockerfile%E5%88%9B%E5%BB%BA%E9%95%9C%E5%83%8F"><span class="toc-text">2.4 Dockerfile创建镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-5-%E4%B8%8A%E4%BC%A0%E9%95%9C%E5%83%8F"><span class="toc-text">2.5 上传镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-6-%E5%AF%BC%E5%87%BA%E5%92%8C%E8%BD%BD%E5%85%A5%E9%95%9C%E5%83%8F"><span class="toc-text">2.6 导出和载入镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#2-7-%E7%A7%BB%E9%99%A4%E6%9C%AC%E5%9C%B0%E9%95%9C%E5%83%8F"><span class="toc-text">2.7 移除本地镜像</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%89%E3%80%81%E5%AE%B9%E5%99%A8"><span class="toc-text">三、容器</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#3-1-%E4%BB%8B%E7%BB%8D"><span class="toc-text">3.1 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-2-%E5%88%9B%E5%BB%BA%E5%AE%B9%E5%99%A8"><span class="toc-text">3.2 创建容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-3-%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8"><span class="toc-text">3.3 启动容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-4-%E5%AE%88%E6%8A%A4%E6%80%81%E8%BF%90%E8%A1%8C"><span class="toc-text">3.4 守护态运行</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-5-%E8%BF%9B%E5%85%A5%E5%AE%B9%E5%99%A8"><span class="toc-text">3.5 进入容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-6-%E7%BB%88%E6%AD%A2%E5%AE%B9%E5%99%A8"><span class="toc-text">3.6 终止容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-7-%E5%B0%86%E5%AE%B9%E5%99%A8%E4%BF%9D%E5%AD%98%E4%B8%BA%E9%95%9C%E5%83%8F"><span class="toc-text">3.7 将容器保存为镜像</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-8-%E5%AF%BC%E5%87%BA-%E5%AF%BC%E5%85%A5%E5%AE%B9%E5%99%A8"><span class="toc-text">3.8 导出&#x2F;导入容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-9-%E5%88%A0%E9%99%A4%E5%AE%B9%E5%99%A8"><span class="toc-text">3.9 删除容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#3-10-%E6%9F%A5%E7%9C%8B%E5%AE%B9%E5%99%A8%E7%8A%B6%E6%80%81"><span class="toc-text">3.10 查看容器状态</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9B%9B%E3%80%81%E6%95%B0%E6%8D%AE%E5%8D%B7"><span class="toc-text">四、数据卷</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#4-1-%E4%BB%8B%E7%BB%8D"><span class="toc-text">4.1 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-2-%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E5%8D%B7"><span class="toc-text">4.2 创建数据卷</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#4-3-%E6%95%B0%E6%8D%AE%E5%8D%B7%E5%AE%B9%E5%99%A8"><span class="toc-text">4.3 数据卷容器</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BA%94%E3%80%81%E7%BD%91%E7%BB%9C"><span class="toc-text">五、网络</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#5-1-%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE%E5%AE%B9%E5%99%A8"><span class="toc-text">5.1 外部访问容器</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-2-%E5%AE%B9%E5%99%A8%E4%BA%92%E8%81%94"><span class="toc-text">5.2 容器互联</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-3-%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6"><span class="toc-text">5.3 访问控制</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-4-%E9%85%8D%E7%BD%AE-docker0-%E6%A1%A5%E6%8E%A5"><span class="toc-text">5.4 配置 docker0 桥接</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#5-5-%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="toc-text">5.5 网络配置文件</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%AD%E3%80%81Dockerfile"><span class="toc-text">六、Dockerfile</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#6-1-%E4%BB%8B%E7%BB%8D"><span class="toc-text">6.1 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-2-%E6%8C%87%E4%BB%A4"><span class="toc-text">6.2 指令</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#6-3-%E5%88%9B%E5%BB%BA%E9%95%9C%E5%83%8F"><span class="toc-text">6.3 创建镜像</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%83%E3%80%81Docker-Compose"><span class="toc-text">七、Docker Compose</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#7-1-%E4%BB%8B%E7%BB%8D"><span class="toc-text">7.1 介绍</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-2-%E5%AE%89%E8%A3%85"><span class="toc-text">7.2 安装</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-3-%E4%BD%BF%E7%94%A8"><span class="toc-text">7.3 使用</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-4-%E5%91%BD%E4%BB%A4%E8%AF%B4%E6%98%8E"><span class="toc-text">7.4 命令说明</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-5-%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F"><span class="toc-text">7.5 环境变量</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#7-6-docker-compose-yml"><span class="toc-text">7.6 docker-compose.yml</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%AB%E3%80%81%E5%AE%89%E5%85%A8"><span class="toc-text">八、安全</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#8-1-%E5%86%85%E6%A0%B8%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4"><span class="toc-text">8.1 内核命名空间</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8-2-%E6%8E%A7%E5%88%B6%E7%BB%84"><span class="toc-text">8.2 控制组</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#8-3-%E5%86%85%E6%A0%B8%E8%83%BD%E5%8A%9B%E6%9C%BA%E5%88%B6"><span class="toc-text">8.3 内核能力机制</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99"><span class="toc-text">参考资料</span></a></li></ol>
    
<style>
    .left-col .switch-btn,
    .left-col .switch-area {
        display: none;
    }
    .toc-level-6 i,
    .toc-level-6 ol {
        display: none !important;
    }
</style>
</div>
    
    <div class="article-entry" itemprop="articleBody">
      
        <h2 id="一、概述"><a href="#一、概述" class="headerlink" title="一、概述"></a>一、概述</h2><h3 id="1-1-什么是docker"><a href="#1-1-什么是docker" class="headerlink" title="1.1 什么是docker"></a>1.1 什么是docker</h3><p>Docker 诞生于 2013 年初，由 dotCloud 公司（后改名为 Docker Inc）基于 Go 语言实现并开源的项目。此项目后来加入 Linux基金会，遵从了 Apache 2.0 协议</p>
<p>Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 是在 Linux 容器技术（LXC）的基础上进行了封装，让用户可以快速并可靠的将应用程序从一台运行到另一台上。</p>
<p>使用容器部署应用被称为<strong>容器化</strong>，容器化技术的几大优势：</p>
<ol>
<li><strong>灵活</strong>：甚至复杂的应用也可以被容器化</li>
<li><strong>轻量</strong>：容器利用和共享宿主机内核，从而在利用系统资源比虚拟机更加的有效</li>
<li><strong>可移植</strong>：你可以在本地构建，在云端部署并在任何地方运行</li>
<li><strong>松耦合</strong>：容器是高度封装和自给自足的，允许你在不破环其他容器的情况下替换或升级任何一个</li>
<li><strong>可扩展</strong>：你可以通过数据中心来新增和自动分发容器</li>
<li><strong>安全</strong>：容器依赖强约束和独立的进程</li>
</ol>
<h3 id="1-2-和传统虚拟机的区别"><a href="#1-2-和传统虚拟机的区别" class="headerlink" title="1.2 和传统虚拟机的区别"></a>1.2 和传统虚拟机的区别</h3><p>容器在Linux上本地运行，并与其他容器共享主机的内核。它运行一个离散进程，不占用任何其他可执行文件更多的内存，从而使其轻巧。</p>
<p><img src="https://cdn.nlark.com/yuque/0/2020/png/93990/1598693996043-1d7fecba-79fd-489c-b933-2d23c37680a8.png" alt="image.png"></p>
<h3 id="1-3-相关链接"><a href="#1-3-相关链接" class="headerlink" title="1.3 相关链接"></a>1.3 相关链接</h3><p>官网：<a target="_blank" rel="noopener" href="https://www.docker.com/">https://www.docker.com/</a></p>
<p>文档：<a target="_blank" rel="noopener" href="https://docs.docker.com/">https://docs.docker.com/</a></p>
<h2 id="二、Image镜像"><a href="#二、Image镜像" class="headerlink" title="二、Image镜像"></a>二、Image镜像</h2><h3 id="2-1-介绍"><a href="#2-1-介绍" class="headerlink" title="2.1 介绍"></a>2.1 介绍</h3><p>Docker 镜像是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外，还包含了一些为运行时准备的一些配置参数（如匿名卷、环境变量、用户等）。镜像不包含任何动态数据，其内容在构建之后也<strong>不会被改变</strong>。</p>
<ol>
<li><strong>父镜像</strong>：每个镜像都可能依赖于有一个或多个下层组成的另一个镜像。下层那个镜像就是上层镜像的父镜像</li>
<li><strong>基础镜像</strong>：一个没有任何父镜像的镜像，被称为基础镜像</li>
<li><strong>镜像ID</strong>：所有镜像都是通过一个 64 位十六进制字符串（256 bit 的值）来标识的。为了简化使用，前 12 个自负可以组成一个短ID，可以在命令行中使用。短ID还是有一定的碰撞几率，所以服务器总是返回长ID</li>
</ol>
<h3 id="2-2-从仓库下载镜像"><a href="#2-2-从仓库下载镜像" class="headerlink" title="2.2 从仓库下载镜像"></a>2.2 从仓库下载镜像</h3><p>可以通过 <code>docker pull</code> 命令从仓库获取所需要的镜像</p>
<pre><code>docker pull [选项] [Docker Registry 地址]&lt;镜像名&gt;:&lt;标签&gt;
</code></pre>
<p><strong>选项:</strong></p>
<ol>
<li>–all-tags,-a : 拉去所有 tagged 镜像</li>
<li>–disable-content-trust：忽略镜像的校验，默认</li>
<li>–platform：如果服务器是开启多平台支持的，则需要设置平台</li>
<li>–quiet,-q：静默执行，不打印详细信息</li>
</ol>
<p>标签： 下载指定标签的镜像，默认 <code>latest</code></p>
<p><strong>示例</strong></p>
<pre><code># 从 Docker Hub 下载最新的 debian 镜像
docker pull debian

# 从 Docker Hub 下载 jessie 版 debian 镜像
docker pull debian:jessie

# 下载指定摘要(sha256)的镜像
docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
</code></pre>
<h3 id="2-3-列出本地镜像"><a href="#2-3-列出本地镜像" class="headerlink" title="2.3 列出本地镜像"></a>2.3 列出本地镜像</h3><pre><code># 列出已下载的镜像 image_name: 指定列出某个镜像
docker images [选项] [image_name]
</code></pre>
<p><strong>选项</strong></p>
<table>
<thead>
<tr>
<th>参数</th>
<th>描述</th>
</tr>
</thead>
<tbody><tr>
<td>–all, -a</td>
<td>展示所有镜像(包括 intermediate 镜像)</td>
</tr>
<tr>
<td>–digests</td>
<td>展示摘要</td>
</tr>
<tr>
<td>–filter, -f</td>
<td>添加过滤条件</td>
</tr>
<tr>
<td>–format</td>
<td>使用 Go 模版更好的展示</td>
</tr>
<tr>
<td>–no-trunc</td>
<td>不删减输出</td>
</tr>
<tr>
<td>–quiet, -q</td>
<td>静默输出，仅仅展示 IDs</td>
</tr>
</tbody></table>
<p><strong>示例</strong></p>
<pre><code># 展示本地所有下载的镜像
docker images

# 在本地查找镜像名是 &quot;java&quot; 标签是 &quot;8&quot; 的 奖项
docker images: java:8

# 查找悬挂镜像
docker images --filter &quot;dangling=true&quot;

# 过滤 lable 为 &quot;com.example.version&quot; 的值为 0.1 的镜像
docker images --filter &quot;label=com.example.version=0.1&quot;
</code></pre>
<h3 id="2-4-Dockerfile创建镜像"><a href="#2-4-Dockerfile创建镜像" class="headerlink" title="2.4 Dockerfile创建镜像"></a>2.4 Dockerfile创建镜像</h3><p>为了方便分享和快速部署，我们可以使用 <code>docker build</code> 来创建一个新的镜像，首先创建一个文件 Dockerfile，如下</p>
<pre><code># This is a comment
FROM ubuntu:14.04
MAINTAINER Chris &lt;jaytp@qq.com&gt;
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
</code></pre>
<p>然后在此 Dockerfile 所在目录执行 <code>docker build -t yelog/ubuntu:v1 .</code> 来生成镜像，所属组织&#x2F;镜像名:标签</p>
<h3 id="2-5-上传镜像"><a href="#2-5-上传镜像" class="headerlink" title="2.5 上传镜像"></a>2.5 上传镜像</h3><p>用户可以通过 <code>docker push</code> 命令，把自己创建的镜像上传到仓库中来共享。例如，用户在 Docker Hub 上完成注册后，可以推送自己的镜像到仓库中。</p>
<pre><code>docker push yelog/ubuntu
</code></pre>
<h3 id="2-6-导出和载入镜像"><a href="#2-6-导出和载入镜像" class="headerlink" title="2.6 导出和载入镜像"></a>2.6 导出和载入镜像</h3><p>docker 支持将镜像导出为文件，然后可以再从文件导入到本地镜像仓库</p>
<pre><code># 导出
docker load --input yelog_ubuntu_v1.tar
# 载入
docker load &lt; yelog_ubuntu_v1.tar
</code></pre>
<h3 id="2-7-移除本地镜像"><a href="#2-7-移除本地镜像" class="headerlink" title="2.7 移除本地镜像"></a>2.7 移除本地镜像</h3><pre><code># -f 强制删除
docker rmi [-f] yelog/ubuntu:v1
# 删除悬挂镜像
docker rmi $(docker images -f &quot;dangling=true&quot; -q)
# 删除所有未被容器使用的镜像
docker image prune -a
</code></pre>
<h2 id="三、容器"><a href="#三、容器" class="headerlink" title="三、容器"></a>三、容器</h2><h3 id="3-1-介绍"><a href="#3-1-介绍" class="headerlink" title="3.1 介绍"></a>3.1 介绍</h3><p>容器和镜像，就像面向对象中的 <strong>类</strong> 和 <strong>示例</strong> 一样，镜像是静态的定义，容器是镜像运行的实体，容器可以被创建、启动、停止、删除和暂停等</p>
<p>容器的实质是进城，耽于直接的宿主执行的进程不同，容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、网络配置和进程空间，甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里，使用起来，就好像是在一个独立于宿主的系统下一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。</p>
<h3 id="3-2-创建容器"><a href="#3-2-创建容器" class="headerlink" title="3.2 创建容器"></a>3.2 创建容器</h3><p>我们可以通过命令 <code>docker run</code> 命令创建容器</p>
<p>如下，启动一个容器，执行命令输出 “Hello word”，之后终止容器</p>
<pre><code>docker run ubuntu:14.04 /bin/echo &#39;Hello world&#39;
</code></pre>
<p>下面的命令则是启动一个 bash 终端，允许用户进行交互</p>
<pre><code>docker run -t -i ubuntu:14.04 /bin/bash
</code></pre>
<p><code>-t</code> 让 Dcoker 分配一个伪终端（pseudo-tty）并绑定到容器的标准输入上</p>
<p><code>-i</code> 责让容器的标准输入保持打开</p>
<p>更多参数可选</p>
<table>
<thead>
<tr>
<th>-a stdin</th>
<th>指定标准输入输出内容类型</th>
</tr>
</thead>
<tbody><tr>
<td>-d</td>
<td>后台运行容器，并返回容器ID</td>
</tr>
<tr>
<td>-i</td>
<td>以交互模式运行容器，通常与 -t 同时使用</td>
</tr>
<tr>
<td>-P</td>
<td>随机端口映射，容器端口内部随即映射到宿主机的端口上</td>
</tr>
<tr>
<td>-p</td>
<td>指定端口映射， -p 宿主机端口:容器端口</td>
</tr>
<tr>
<td>-t</td>
<td>为容器重新分配一个伪输入终，通常与 -i 同时使用</td>
</tr>
<tr>
<td>–name&#x3D;”gate”</td>
<td>为容器指定一个名称</td>
</tr>
<tr>
<td>–dns 8.8.8.8</td>
<td>指定容器的 DNS 服务器，默认与宿主机一致</td>
</tr>
<tr>
<td>–dns-search example.com</td>
<td>指定容器 DNS 搜索域名，默认与宿主机一致</td>
</tr>
<tr>
<td>-h “gate”</td>
<td>指定容器的 hostname</td>
</tr>
<tr>
<td>-e username&#x3D;’gate’</td>
<td>设置环境变量</td>
</tr>
<tr>
<td>–env-file&#x3D;[]</td>
<td>从指定文件读入环境变量</td>
</tr>
<tr>
<td>–cpuset&#x3D;”0-2” or –cpuset&#x3D;”0,1,2”</td>
<td>绑定容器到指定 CPU 运行</td>
</tr>
<tr>
<td>-m</td>
<td>设置容器使用内存最大值</td>
</tr>
<tr>
<td>–net&#x3D;”bridge”</td>
<td>指定容器的网络连接类型支持 bridge&#x2F;host&#x2F;none&#x2F;container</td>
</tr>
<tr>
<td>–link&#x3D;[]</td>
<td>添加链接到另一个容器</td>
</tr>
<tr>
<td>–expose&#x3D;[]</td>
<td>开放一个端口或一组端口</td>
</tr>
<tr>
<td>–volume,-v</td>
<td>绑定一个卷</td>
</tr>
</tbody></table>
<p>当利用 <code>docker run</code> 来创建容器时，Dcoker 在后台运行的标准操作包括：</p>
<ul>
<li>检查本地是否存在指定的镜像，不存在就从公有仓库下载</li>
<li>利用镜像创建并启动一个容器</li>
<li>分配一个文件系统，并在只读的镜像外面挂在一层可读写层</li>
<li>从宿主主机配置的网桥接口中桥接一个虚拟借口到容器中去</li>
<li>从地址池配置一个 ip 地址给容器</li>
<li>执行用户指定的应用程序</li>
<li>执行用户指定的应用程序</li>
<li>执行完毕后容器被终止</li>
</ul>
<h3 id="3-3-启动容器"><a href="#3-3-启动容器" class="headerlink" title="3.3 启动容器"></a>3.3 启动容器</h3><pre><code># 创建一个名为 test 的容器，容器任务是：打印一行 Hello word
docker run --name=&#39;test&#39; ubuntu:14.04 /bin/echo &#39;Hello world&#39;
# 查看所有可用容器 [-a]包括终止在内的所有容器
docker ps -a
# 启动指定 name 的容器
docker start test
# 重启指定 name 的容器
docker restart test
# 查看日志运行日志（每次启动的日志均被查询出来）
$ docker logs test
Hello world
Hello world
</code></pre>
<h3 id="3-4-守护态运行"><a href="#3-4-守护态运行" class="headerlink" title="3.4 守护态运行"></a>3.4 守护态运行</h3><p>前面创建的容器都是执行任务（打印Hello world）后，容器就终止了。更多的时候，我们需要让 Docker 容器在后台以守护态（Daemonized）形式运行。此时，可以通过添加 <code>-d</code> 参数来实现</p>
<blockquote>
<p>注意：docker是否会长久运行，和 docker run 指定的命令有关</p>
</blockquote>
<pre><code># 创建 docker 后台守护进程的容器
docker run --name=&#39;test2&#39; -d ubuntu:14.04 /bin/sh -c &quot;while true; do echo hello world; sleep 1; done&quot;

# 查看容器
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
237e555d4457        ubuntu:14.04        &quot;/bin/sh -c &#39;while t…&quot;   52 seconds ago      Up 51 seconds                                           test2

# 获取容器的输出信息
$ docker logs test2
hello world
hello world
hello world
</code></pre>
<h3 id="3-5-进入容器"><a href="#3-5-进入容器" class="headerlink" title="3.5 进入容器"></a>3.5 进入容器</h3><p>上一步我们已经实现了容器守护态长久运行，某些时候需要进入容器进行操作，可以使用 <code>attach</code> 、<code>exec</code> 进入容器。</p>
<pre><code># 不安全的，ctrl+d 退出时容器也会终止
docker attach [容器Name]

# 以交互式命令行进入，安全的，推荐使用
docker exec -it [容器Name] /bin/bash
</code></pre>
<p><strong>命令优化</strong></p>
<ol>
<li>使用 <code>docker exec</code> 命令时，好用，但是命令过长，我们可以通过自定义命令来简化使用</li>
<li>创建文件 <code>/user/bin/ctn</code> 命令文件，内容如下</li>
</ol>
<pre><code>docker exec -it $1 /bin/bash
</code></pre>
<ol>
<li>检查环境变量有没有配置目录 <code>/usr/bin</code> （一般是有配置在环境变量里面的，不过最好再确认一下）</li>
</ol>
<pre><code>$PATH
bash: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games: No such file or directory
</code></pre>
<ol>
<li>完成上面步骤后，就可以直接通过命令 <code>ctn</code> 来进入容器</li>
</ol>
<blockquote>
<p>注意：如果是使用非 root 账号创建的命令，而 docker 命令是 root 权限，可能存在权限问题，可以通过设置 <code>chmod 777 /usr/bin/ctn</code> 设置权限，使用 <code>sudo ctn [容器Name]</code> 即可进入容器</p>
</blockquote>
<pre><code>$ ctn [容器Name]
</code></pre>
<ol>
<li>使用上面命令时，容器Name 需要手动输入，容器出错。我们可以借助 <code>complete</code> 命令来补全 容器Name，在 <code>~/.bashrc</code> （作用于当前用户，如果想要所要用户上校，可以修改 <code>/etc/bashrc</code>）文件中添加一行，内容如下。保存后执行 <code>source ~/.bashrc</code> 使之生效，之后我们输入 <code>ctn</code> 后，按 <code>tab</code> 就会提示或自动补全容器名了了</li>
</ol>
<pre><code># ctn auto complete
complete -W &quot;$(docker ps --format&quot;&#123;&#123;.Names&#125;&#125;&quot;)&quot; ctn
</code></pre>
<blockquote>
<p>注意： 由于提示的 容器Name 是 <code>~/.bashrc</code> 生效时的列表，所有如果之后 docker 容器列表有变动，需要重新执行 <code>source ~/.bashrc</code> 使之更新提示列表</p>
</blockquote>
<h3 id="3-6-终止容器"><a href="#3-6-终止容器" class="headerlink" title="3.6 终止容器"></a>3.6 终止容器</h3><p>通过 <code>docker stop [容器Name]</code> 来终止一个<strong>运行中</strong>的容器</p>
<pre><code># 终止容器名为 test2 的容器
docker stop test2
# 查看正在运行中的容器
docker ps
# 查看所有容器（包括终止的）
docker ps -a
</code></pre>
<h3 id="3-7-将容器保存为镜像"><a href="#3-7-将容器保存为镜像" class="headerlink" title="3.7 将容器保存为镜像"></a>3.7 将容器保存为镜像</h3><p>我们修改一个容器后，可以经当前容器状态打包成镜像，方便下次直接通过镜像仓库生成当前状态的容器。</p>
<pre><code># 创建容器
docker run -t -i training/sinatra /bin/bash

# 添加两个应用
gem install json

# 将修改后的容器打包成新的镜像
docker commit -m &quot;Added json gem&quot; -a &quot;Docker Newbee&quot; 0b2616b0e5a8 ouruser/sinatra:v2
</code></pre>
<h3 id="3-8-导出-导入容器"><a href="#3-8-导出-导入容器" class="headerlink" title="3.8 导出&#x2F;导入容器"></a>3.8 导出&#x2F;导入容器</h3><p>容器 -&gt;导出&gt; 容器快照文件 -&gt;导入&gt; 本地镜像仓库 -&gt;新建&gt; 容器</p>
<pre><code>$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
2a8bffa405c8        ubuntu:14.04        &quot;/bin/sh -c &#39;while t…&quot;   About an hour ago   Up 3 seconds                                            test2

# 导出
$ docker export 2a8bffa405c8 &gt; ubuntu.tar

# 导入为镜像
$ docker ubuntu.tar | docker import - test/ubuntu:v1.0

# 从指定 URL 或者某个目录导入
$ docker import http://example.com/exampleimage.tgz example/imagerepo
</code></pre>
<blockquote>
<p>注意：用户既可以通过 <code>docker load</code> 来导入镜像存储文件到本地镜像仓库，也可以使用 <code>docker import</code> 来导入一个容器快找到本地镜像仓库，两者的区别在于容器快照将丢失所有的历史记录和元数据信息，仅保存容器当时的状态，而镜像存储文件将保存完成的记录，体积要更大。所有容器快照文件导入时需要重新指定标签等元数据信息。</p>
</blockquote>
<h3 id="3-9-删除容器"><a href="#3-9-删除容器" class="headerlink" title="3.9 删除容器"></a>3.9 删除容器</h3><p>可以使用 <code>docker rm [容器Name]</code> 来删除一个终止状态的容器，如果容器还未终止，可以先使用 <code>docker stop [容器Name]</code> 来终止容器，再进行删除操作</p>
<pre><code>docker rm test2

# 删除容器 -f: 强制删除，无视是否运行
$ docker [-f] rm myubuntu

# 删除所有已关闭的容器
$ docker rm $(docker ps -a -q)
</code></pre>
<h3 id="3-10-查看容器状态"><a href="#3-10-查看容器状态" class="headerlink" title="3.10 查看容器状态"></a>3.10 查看容器状态</h3><pre><code>docker stats $(docker ps --format=&#123;&#123;.Names&#125;&#125;)
</code></pre>
<h2 id="四、数据卷"><a href="#四、数据卷" class="headerlink" title="四、数据卷"></a>四、数据卷</h2><h3 id="4-1-介绍"><a href="#4-1-介绍" class="headerlink" title="4.1 介绍"></a>4.1 介绍</h3><p>数据卷是一个可供一个或多个容器使用的特殊目录，它绕过 UFS，可以提供很多特性：</p>
<ul>
<li>数据卷可以在容器之间共享和重用</li>
<li>对数据卷的修改会立马生效</li>
<li>对数据卷的更新，不会影响镜像</li>
<li>卷会一直存在，直到没有容器使用</li>
</ul>
<blockquote>
<p>数据卷类似于 Linux 下对目录或文件进行 mount</p>
</blockquote>
<h3 id="4-2-创建数据卷"><a href="#4-2-创建数据卷" class="headerlink" title="4.2 创建数据卷"></a>4.2 创建数据卷</h3><p>在用 <code>docker run</code> 命令的时候，使用 <code>-v</code> 标记来创建一个数据卷并挂在在容器里，可同时挂在多个。</p>
<pre><code># 创建一个 web 容器，并加载一个数据卷到容器的 /webapp 目录
docker run -d -P --name web -v /webapp training/webapp python app.py

# 挂载一个宿主机目录 /data/webapp 到容器中的 /opt/webapp
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

# 默认是读写权限，也可以指定为只读
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro

# 挂载单个文件
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
</code></pre>
<h3 id="4-3-数据卷容器"><a href="#4-3-数据卷容器" class="headerlink" title="4.3 数据卷容器"></a>4.3 数据卷容器</h3><p>如果需要多个容器共享数据，最好创建数据卷容器，就是一个正常的容器，撰文用来提供数据卷供其他容器挂载的</p>
<pre><code># 创建一个数据卷容器 dbdata
docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres

# 其他容器挂载 dbdata 容器的数据卷
docker run -d --volumes-from dbdata --name db1 training/postgres
docker run -d --volumes-from dbdata --name db2 training/postgres
</code></pre>
<h2 id="五、网络"><a href="#五、网络" class="headerlink" title="五、网络"></a>五、网络</h2><h3 id="5-1-外部访问容器"><a href="#5-1-外部访问容器" class="headerlink" title="5.1 外部访问容器"></a>5.1 外部访问容器</h3><p>在容器内运行一些服务，需要外部可以访问到这些服务，可以通过 <code>-P</code> 或 <code>-p</code> 参数来指定端口映射。</p>
<p>当使用 <code>-P</code> 标记时，Docker 会随即映射一个 <code>49000～49900</code> 的端口到内部容器开放的网络端口。</p>
<p>使用 <code>docker ps</code> 可以查看端口映射情况</p>
<pre><code>$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
7f43807dc042        training/webapp     &quot;python app.py&quot;          3 seconds ago       Up 2 seconds        0.0.0.0:32770-&gt;5000/tcp             amazing_liskov
</code></pre>
<p>-p 指定端口映射，支持格式 <code>ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort</code></p>
<pre><code># 不限制ip访问
docker run -d -p 5000:5000 training/webapp python app.py
# 只允许宿主机回环地址访问
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
# 宿主机自动分配绑定端口
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
# 指定 udp 端口
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
# 指定多个端口映射
docker run -d -p 5000:5000  -p 3000:80 training/webapp python app.py
# 查看映射端口配置
$ docker port amazing_liskov
5000/tcp -&gt; 0.0.0.0:32770
</code></pre>
<h3 id="5-2-容器互联"><a href="#5-2-容器互联" class="headerlink" title="5.2 容器互联"></a>5.2 容器互联</h3><p>容器除了跟宿主机端口映射外，还有一种容器间交互的方式，可以在源&#x2F;目标容器之间建立一个隧道，目标容器可以看到源容器指定的信息。</p>
<p>可以通过 <code>--link name:alias</code> 来连接容器，下面就是 “web容器连接db容器” 的例子</p>
<pre><code># 创建 容器db
docker run -d --name db training/postgres
# 创建 容器web 并连接到 容器db
docker run -d -P --name web --link db:db training/webapp python app.py

# 进入 容器web，测试连通性
$ ctn web
$ ping db
PING db (172.17.0.3) 56(84) bytes of data.
64 bytes from db (172.17.0.3): icmp_seq=1 ttl=64 time=0.254 ms
64 bytes from db (172.17.0.3): icmp_seq=2 ttl=64 time=0.190 ms
64 bytes from db (172.17.0.3): icmp_seq=3 ttl=64 time=0.389 ms
</code></pre>
<h3 id="5-3-访问控制"><a href="#5-3-访问控制" class="headerlink" title="5.3 访问控制"></a>5.3 访问控制</h3><p>容器想要访问外部网络，需要宿主机的转发支持。在 Linux 系统中，通过以下命令检查是否打开</p>
<pre><code>$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
</code></pre>
<p>如果是 0，说明没有开启转发，则需要手动打开。</p>
<pre><code>$ sysctl -w net.ipv4.ip_forward=1
</code></pre>
<h3 id="5-4-配置-docker0-桥接"><a href="#5-4-配置-docker0-桥接" class="headerlink" title="5.4 配置 docker0 桥接"></a>5.4 配置 docker0 桥接</h3><p>Docker 服务默认会创建一个 <code>docker0</code> 网桥，他在内核层连通了其他物理或虚拟网卡，这就将容器和主机都放在同一个物理网络。</p>
<p>Docker 默认制定了 <code>docker0</code> 接口的IP地址和子网掩码，让主机和容器间可以通过网桥相互通信，他还给了 MTU（接口允许接收的最大单元），通常是 1500 Bytes，或宿主机网络路由上支持的默认值。这些都可以在服务启动的时候进行配置。</p>
<ul>
<li><code>--bip=CIDR</code> ip地址加子网掩码格式，如 192.168.1.5&#x2F;24</li>
<li><code>--mtu=BYTES</code> 覆盖默认的 Docker MTU 配置</li>
</ul>
<p>可以通过 <code>brctl show</code> 来查看网桥和端口连接信息</p>
<h3 id="5-5-网络配置文件"><a href="#5-5-网络配置文件" class="headerlink" title="5.5 网络配置文件"></a>5.5 网络配置文件</h3><p>Docker 1.2.0 开始支持在运行中的容器里编辑 <code>/etc/hosts</code> 、<code>/etc/hostsname</code> 和 <code>/etc/resolve.conf</code> 文件，修改都是临时的，重新容器将会丢失修改，通过 <code>docker commit</code> 也不会被提交。</p>
<h2 id="六、Dockerfile"><a href="#六、Dockerfile" class="headerlink" title="六、Dockerfile"></a>六、Dockerfile</h2><h3 id="6-1-介绍"><a href="#6-1-介绍" class="headerlink" title="6.1 介绍"></a>6.1 介绍</h3><p>Dockerfile 是由一行行命令组成的命令集合，分为四个部分：</p>
<ol>
<li>基础镜像信息</li>
<li>维护着信息</li>
<li>镜像操作指令</li>
<li>容器启动时执行指令</li>
</ol>
<p>如下：</p>
<pre><code># 最前面一般放这个 Dockerfile 的介绍、版本、作者及使用说明等
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..

# 使用的基础镜像，必须放在非注释第一行
FROM ubuntu

# 维护着信息信息： 名字 联系方式
MAINTAINER docker_user docker_user@email.com

# 构建镜像的命令：对镜像做的调整都在这里
RUN echo &quot;deb http://archive.ubuntu.com/ubuntu/ raring main universe&quot; &gt;&gt; /etc/apt/sources.list
RUN apt-get update &amp;&amp; apt-get install -y nginx
RUN echo &quot;\ndaemon off;&quot; &gt;&gt; /etc/nginx/nginx.conf

# 创建/运行 容器时的操作指令 
# 可以理解为 docker run 后跟的运行指令
CMD /usr/sbin/nginx
</code></pre>
<h3 id="6-2-指令"><a href="#6-2-指令" class="headerlink" title="6.2 指令"></a>6.2 指令</h3><p>指令一般格式为 <code>INSTRUCTION args</code>，包括 <code>FORM</code> 、 <code>MAINTAINER</code> 、<code>RUN</code> 等</p>
<table>
<thead>
<tr>
<th>FORM</th>
<th>第一条指令必须是 <code>FORM</code> 指令，并且如果在同一个<code>Dockerfile</code> 中创建多个镜像，可以使用多个 <code>FROM</code> 指令（每个镜像一次）</th>
<th>FORM ubuntuFORM ubuntu:14.04</th>
</tr>
</thead>
<tbody><tr>
<td>MAINTAINER</td>
<td>维护者信息</td>
<td>MAINTAINER Chris <a href="mailto:&#x78;&#120;&#64;&#x67;&#109;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;">&#x78;&#120;&#64;&#x67;&#109;&#x61;&#105;&#108;&#46;&#99;&#111;&#109;</a></td>
</tr>
<tr>
<td>RUN</td>
<td>每条 RUN 指令在当前镜像基础上执行命令，并提交为新的镜像。当命令过长时可以使用 <code>\</code> 来换行</td>
<td>在 shell 终端中运行命令<code>RUN apt-get update &amp;&amp; apt-get install -y nginx</code>在 <code>exec</code> 中执行:<code>RUN [&quot;/bin/bash&quot;, &quot;-c&quot;, &quot;echo hello&quot;]</code></td>
</tr>
<tr>
<td>CMD</td>
<td>指定启动容器时执行的命令，每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令，只有最后一条会被执行。</td>
<td><code>CMD [&quot;executable&quot;,&quot;param1&quot;,&quot;param2&quot;]</code> 使用 <code>exec</code> 执行，推荐方式；<code>CMD command param1 param2</code> 在 <code>/bin/sh</code> 中执行，提供给需要交互的应用；<code>CMD [&quot;param1&quot;,&quot;param2&quot;]</code> 提供给 <code>ENTRYPOINT</code> 的默认参数；</td>
</tr>
<tr>
<td>EXPOSE</td>
<td>告诉服务端容器暴露的端口号，</td>
<td>EXPOSE <port></td>
</tr>
<tr>
<td>ENV</td>
<td>指定环境变量</td>
<td>ENV PG_MAJOR 9.3ENV PATH &#x2F;usr&#x2F;local&#x2F;postgres-$PG_MAJOR&#x2F;bin:$PATH</td>
</tr>
<tr>
<td>ADD</td>
<td><code>ADD  </code>该命令将复制指定的 <code> </code>到容器中的 <code>。其中 </code> 可以是 <code>Dockerfile</code> 所在目录的一个相对路径，也可以是一个<code>URL</code>；还可以是一个 tar文件（自动解压为目录）</td>
<td></td>
</tr>
<tr>
<td>COPY</td>
<td>格式为 <code>COPY  </code>复制本地主机的 <code>（为 Dockerfile 所在目录的相对路径）到容器中的</code> 。当使用本地目录为源目录时，推荐使用 <code>COPY</code></td>
<td></td>
</tr>
<tr>
<td>ENTRYPOINT</td>
<td>配置容器启动执行的命令，并且不可被 <code>docker run</code> 提供的参数覆盖每个Docekrfile 中只能有一个 <code>ENTRYPOINT</code> ，当指定多个时，只有最后一个起效</td>
<td>两种格式<code>ENTRYPOINT [&quot;executable&quot;, &quot;param1&quot;, &quot;param2&quot;]``ENTRYPOINT command param1 param2</code>（shell中执行）</td>
</tr>
<tr>
<td>VOLUME</td>
<td>创建一个可以从本地主机或其他容器挂载的挂载点，一般用来存放数据库和需要保持的数据等。</td>
<td>VOLUME [“&#x2F;data”]</td>
</tr>
<tr>
<td>USER</td>
<td>指定运行容器时的用户名或 UID，后续的 <code>RUN</code> 也会使用指定用户</td>
<td>USER daemon</td>
</tr>
<tr>
<td>WORKDIR</td>
<td>为后续的 <code>RUN</code>、<code>CMD</code>、<code>ENTRYPOINT</code> 指令配置工作目录。可以使用多个 <code>WORKDIR</code> 指令，后续命令如果参数是相对路径，则会基于之前命令指定的路径。</td>
<td>格式为 <code>WORKDIR /path/to/workdir</code>。 WORKDIR &#x2F;aWORKDIR bWORKDIR cRUN pwd最后的路径为 &#x2F;a&#x2F;b&#x2F;c</td>
</tr>
<tr>
<td>ONBUILD</td>
<td>配置当所创建的镜像作为其它新创建镜像的基础镜像时，所执行的操作指令。</td>
<td>格式为 <code>ONBUILD [INSTRUCTION]</code>。</td>
</tr>
</tbody></table>
<h3 id="6-3-创建镜像"><a href="#6-3-创建镜像" class="headerlink" title="6.3 创建镜像"></a>6.3 创建镜像</h3><p>编写完成 Dockerfile 之后，可以通过 <code>docker build</code> 命令来创建镜像</p>
<p><code>docker build [选项] 路径</code> 该命令江都区指定路径下（包括子目录）的Dockerfile，并将该路径下所有内容发送给 Docker 服务端，有服务端来创建镜像。可以通过 <code>.dockerignore</code> 文件来让 Docker 忽略路径下的目录与文件</p>
<pre><code># 使用 -t 指定镜像的标签信息
docker build -t myrepo/myimage .
</code></pre>
<h2 id="七、Docker-Compose"><a href="#七、Docker-Compose" class="headerlink" title="七、Docker Compose"></a>七、Docker Compose</h2><h3 id="7-1-介绍"><a href="#7-1-介绍" class="headerlink" title="7.1 介绍"></a>7.1 介绍</h3><p>Docker Compose 是 Docker 官方编排项目之一，负责快速在集群中部署分布式应用。维护地址：<a target="_blank" rel="noopener" href="https://github.com/docker/compose%EF%BC%8C%E7%94%B1">https://github.com/docker/compose，由</a> Python 编写，实际调用 Docker提供的API实现。</p>
<p>Dockerfile 可以让用户管理一个单独的应用容器，而 Compose 则允许用户在一个模版（YAML格式）中定义一组相关联的应用容器（被称为一个project&#x2F;项目），例如一个 web容器再加上数据库、redis等。</p>
<h3 id="7-2-安装"><a href="#7-2-安装" class="headerlink" title="7.2 安装"></a>7.2 安装</h3><pre><code># 使用 pip 进行安装
pip install -U docker-compose

# 查看用法
docker-ompose -h

# 添加 bash 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.2.0/contrib/completion/bash/docker-compose &gt; /etc/bash_completion.d/docker-compose
</code></pre>
<h3 id="7-3-使用"><a href="#7-3-使用" class="headerlink" title="7.3 使用"></a>7.3 使用</h3><p>术语</p>
<ul>
<li>服务&#x2F;service： 一个应用容器，实际上可以运行多个相同镜像的实例</li>
<li>项目&#x2F;project： 有一组关联的应用容器组成的完成业务单元</li>
</ul>
<p>示例：创建一个 Haproxy 挂载三个 Web 容器</p>
<p>创建一个 <code>compose-haproxy-web</code> 目录，作为项目工作目录，并在其中分别创建两个子目录： <code>haproxy</code> 和 <code>web</code> 。</p>
<pre><code>compose-haproxy-webcompose-haproxy-web
git clone https://github.com/yelog/compose-haproxy-web.git
</code></pre>
<p>目录长这样：</p>
<pre><code>compose-haproxy-web
├── docker-compose.yml
├── haproxy
│   └── haproxy.cfg
└── web
    ├── Dockerfile
    ├── index.html
    └── index.py
</code></pre>
<p>在该目录执行 <code>docker-compose up</code> 命令，会整合输出所有容器的输出</p>
<pre><code>$ docker-compose up
Starting compose-haproxy-web_webb_1 ... done
Starting compose-haproxy-web_webc_1 ... done
Starting compose-haproxy-web_weba_1 ... done
Recreating compose-haproxy-web_haproxy_1 ... done
Attaching to compose-haproxy-web_webb_1, compose-haproxy-web_weba_1, compose-haproxy-web_webc_1, compose-haproxy-web_haproxy_1
haproxy_1  | [NOTICE] 244/131022 (1) : haproxy version is 2.2.2
haproxy_1  | [NOTICE] 244/131022 (1) : path to executable is /usr/local/sbin/haproxy
haproxy_1  | [ALERT] 244/131022 (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:14] : &#39;listen&#39; cannot handle unexpected argument &#39;:70&#39;.
haproxy_1  | [ALERT] 244/131022 (1) : parsing [/usr/local/etc/haproxy/haproxy.cfg:14] : please use the &#39;bind&#39; keyword for listening addresses.
haproxy_1  | [ALERT] 244/131022 (1) : Error(s) found in configuration file : /usr/local/etc/haproxy/haproxy.cfg
haproxy_1  | [ALERT] 244/131022 (1) : Fatal errors found in configuration.
compose-haproxy-web_haproxy_1 exited with code 1
</code></pre>
<p>此时访问本地的 80 端口，会经过 haproxy 自动转发到后端的某个 web 容器上，刷新页面，可以观察到访问的容器地址的变化。</p>
<h3 id="7-4-命令说明"><a href="#7-4-命令说明" class="headerlink" title="7.4 命令说明"></a>7.4 命令说明</h3><p>大部分命令都可以运行在一个或多个服务上。如果没有特别的说明，命令则应用在项目所有的服务上。</p>
<p>执行 <code>docker-compose [COMMAND] --help</code> 查看具体某个命令的使用说明</p>
<p>使用格式</p>
<pre><code>docker-compose [options] [COMMAND] [ARGS...]
</code></pre>
<table>
<thead>
<tr>
<th>build</th>
<th>构建&#x2F;重建服务服务一旦构建后，将会带上一个标记名，例如 web_db可以随时在项目目录运行 <code>docker-compose build</code> 来重新构建服务</th>
</tr>
</thead>
<tbody><tr>
<td>help</td>
<td>获得一个命令的信息</td>
</tr>
<tr>
<td>kill</td>
<td>通过发送 <code>SIGKILL</code> 信号来强制停止服务容器，支持通过参数来指定发送信号，例如<code>docker-compose kill -s SIGINT</code></td>
</tr>
<tr>
<td>logs</td>
<td>查看服务的输出</td>
</tr>
<tr>
<td>port</td>
<td>打印绑定的公共端口</td>
</tr>
<tr>
<td>ps</td>
<td>列出所有容器</td>
</tr>
<tr>
<td>pull</td>
<td>拉去服务镜像</td>
</tr>
<tr>
<td>rm</td>
<td>删除停止的服务容器</td>
</tr>
<tr>
<td>run</td>
<td>在一个服务上执行一个命令<code>docker-compose run ubuntu ping docker.com</code></td>
</tr>
<tr>
<td>scale</td>
<td>设置同一个服务运行的容器个数通过 <code>service=num</code> 的参数来设置数量<code>docker-compose scale web=2 worker=3</code></td>
</tr>
<tr>
<td>start</td>
<td>启动一个已经存在的服务容器</td>
</tr>
<tr>
<td>stop</td>
<td>停止一个已经运行的容器，但不删除。可以通过 <code>docker-compose start</code> 再次启动</td>
</tr>
<tr>
<td>up</td>
<td>构建、创建、启动、链接一个服务相关的容器链接服务都将被启动，除非他们已经运行<code>docker-compose up -d</code> 将后台运行并启动<code>docker-compose up</code> 已存在容器将会重新创建<code>docker-compose up --no-recreate</code> 将不会重新创建容器</td>
</tr>
</tbody></table>
<h3 id="7-5-环境变量"><a href="#7-5-环境变量" class="headerlink" title="7.5 环境变量"></a>7.5 环境变量</h3><p>环境变量可以用来配置 Compose 的行为</p>
<p>以 <code>Docker_</code> 开头的变量用来配置 Docker 命令行客户端使用的一样</p>
<table>
<thead>
<tr>
<th>COMPOSE_PROJECT_NAME</th>
<th>设置通过 Compose 启动的每一个容器前添加的项目名称，默认是当前工作目录的名字。</th>
</tr>
</thead>
<tbody><tr>
<td>COMPOSE_FILE</td>
<td>设置要使用的 <code>docker-compose.yml</code> 的路径。默认路径是当前工作目录。</td>
</tr>
<tr>
<td>DOCKER_HOST</td>
<td>设置 Docker daemon 的地址。默认使用 <code>unix:///var/run/docker.sock</code>，与 Docker 客户端采用的默认值一致。</td>
</tr>
<tr>
<td>DOCKER_TLS_VERIFY</td>
<td>如果设置不为空，则与 Docker daemon 交互通过 TLS 进行。</td>
</tr>
<tr>
<td>DOCKER_CERT_PATH</td>
<td>配置 TLS 通信所需要的验证（<code>ca.pem</code>、<code>cert.pem</code> 和 <code>key.pem</code>）文件的路径，默认是 <code>~/.docker</code> 。</td>
</tr>
</tbody></table>
<h3 id="7-6-docker-compose-yml"><a href="#7-6-docker-compose-yml" class="headerlink" title="7.6 docker-compose.yml"></a>7.6 docker-compose.yml</h3><p>默认模版文件是 <code>docker-compose.yml</code> ，启动定义了每个服务都必须经过 <code>image</code> 指令指定镜像或 <code>build</code> 指令（需要 Dockerfile) 来自动构建。</p>
<p>其他大部分指令跟 <code>docker run</code> 类似</p>
<p>如果使用 <code>build</code> 指令，在 Dockerfile 中设置的选项（如 <code>CMD</code> 、<code>EXPOSE</code> 等）将会被自动获取，无需在 <code>docker-compose.yml</code> 中再次设置。</p>
<pre><code>**image**
</code></pre>
<p>指定镜像名称或镜像ID，如果本地仓库不存在，将尝试从远程仓库拉去此镜像</p>
<pre><code>image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
**build**
</code></pre>
<p>指定 <code>Dockerfile</code> 所在文件的路径。<code>Compose</code> 将利用它自动构建这个镜像，然后使用这个镜像。</p>
<pre><code>build: /path/to/build/dir
**command**
</code></pre>
<p>覆盖容器启动默认执行命令</p>
<pre><code>command: bundle exec thin -p 3000
**links**
</code></pre>
<p>链接到其他服务中的容器，使用服务名称或别名</p>
<pre><code>links:
    - db
  - db:database
  - redis
</code></pre>
<p>别名会自动在服务器中的 <code>/etc/hosts</code> 里创建。例如：</p>
<pre><code>172.17.2.186  db
172.17.2.186  database
172.17.2.187  redis
**external_links**
</code></pre>
<p>连接到 <code>docker-compose.yml</code> 外部的容器，甚至并非 <code>Compose</code> 管理的容器。</p>
<pre><code>external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql
</code></pre>
<p><strong><code>ports</code></strong></p>
<p>暴露端口信息 <code>HOST:CONTAINER</code></p>
<p>格式或者仅仅指定容器的端口（宿主机会随机分配端口）</p>
<pre><code>ports:
 - &quot;3000&quot;
 - &quot;8000:8000&quot;
 - &quot;49100:22&quot;
 - &quot;127.0.0.1:8001:8001&quot;
</code></pre>
<blockquote>
<p><em>注：当使用 <code>HOST:CONTAINER</code> 格式来映射端口时，如果你使用的容器端口小于 60 你可能会得到错误得结果，因为 <code>YAML</code> 将会解析 <code>xx:yy</code> 这种数字格式为 60 进制。所以建议采用字符串格式。</em></p>
</blockquote>
<pre><code>**expose**
</code></pre>
<p>暴露端口，但不映射到宿主机，只被连接的服务访问</p>
<pre><code>expose:
 - &quot;3000&quot;
 - &quot;8000&quot;
</code></pre>
<p><strong><code>volumes</code></strong></p>
<p>卷挂载路径设置。可以设置宿主机路径 （<code>HOST:CONTAINER</code>） 或加上访问模式 （<code>HOST:CONTAINER:ro</code>）。</p>
<pre><code>volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro
</code></pre>
<p>**<br>**</p>
<p><strong><code>volumes_from</code></strong></p>
<p>从另一个服务或容器挂载它的所有卷。</p>
<pre><code>volumes_from:
 - service_name
 - container_name
</code></pre>
<pre><code>environment
</code></pre>
<p>设置环境变量。你可以使用数组或字典两种格式。</p>
<p>只给定名称的变量会自动获取它在 Compose 主机上的值，可以用来防止泄露不必要的数据。</p>
<pre><code>environment:
  RACK_ENV: development
  SESSION_SECRET:
environment:
  - RACK_ENV=development
  - SESSION_SECRET
</code></pre>
<p><strong><code>env_file</code></strong></p>
<p>从文件中获取环境变量，可以为单独的文件路径或列表。</p>
<p>如果通过 <code>docker-compose -f FILE</code> 指定了模板文件，则 <code>env_file</code> 中路径会基于模板文件路径。</p>
<p>如果有变量名称与 <code>environment</code> 指令冲突，则以后者为准。</p>
<pre><code>env_file: .env
env_file:
  - ./common.env
  - ./apps/web.env
  - /opt/secrets.env
</code></pre>
<p>环境变量文件中每一行必须符合格式，支持 <code>#</code> 开头的注释行。</p>
<pre><code># common.env: Set Rails/Rack environment
RACK_ENV=development
</code></pre>
<p><strong><code>extends</code></strong></p>
<p>基于已有的服务进行扩展。例如我们已经有了一个 webapp 服务，模板文件为 <code>common.yml</code>。</p>
<pre><code># common.yml
webapp:
  build: ./webapp
  environment:
    - DEBUG=false
    - SEND_EMAILS=false
</code></pre>
<p>编写一个新的 <code>development.yml</code> 文件，使用 <code>common.yml</code> 中的 webapp 服务进行扩展。</p>
<pre><code># development.yml
web:
  extends:
    file: common.yml
    service: webapp
  ports:
    - &quot;8000:8000&quot;
  links:
    - db
  environment:
    - DEBUG=true
db:
  image: postgres
</code></pre>
<p>后者会自动继承 common.yml 中的 webapp 服务及相关环节变量。</p>
<p>**<br>**</p>
<p><strong><code>net</code></strong></p>
<p>设置网络模式。使用和 <code>docker client</code> 的 <code>--net</code> 参数一样的值。</p>
<pre><code>net: &quot;bridge&quot;
net: &quot;none&quot;
net: &quot;container:[name or id]&quot;
net: &quot;host&quot;
</code></pre>
<p>**<br>**</p>
<p><strong><code>pid</code></strong></p>
<p>跟主机系统共享进程命名空间。打开该选项的容器可以相互通过进程 ID 来访问和操作。</p>
<pre><code>pid: &quot;host&quot;
</code></pre>
<p><strong><code>dns</code></strong></p>
<p>配置 DNS 服务器。可以是一个值，也可以是一个列表。</p>
<pre><code>dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9
</code></pre>
<p><strong><code>cap_add, cap_drop</code></strong></p>
<p>添加或放弃容器的 Linux 能力（Capabiliity）。</p>
<pre><code>cap_add:
  - ALL
cap_drop:
  - NET_ADMIN
  - SYS_ADMIN
</code></pre>
<p>**<br>**</p>
<p><strong><code>dns_search</code></strong></p>
<p>配置 DNS 搜索域。可以是一个值，也可以是一个列表。</p>
<pre><code class="yaml">dns_search: example.com
dns_search:
  - domain1.example.com
  - domain2.example.com
</code></pre>
<p>**<br>**</p>
<p><strong><code>working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged, restart, stdin_open, tty, cpu_shares</code></strong></p>
<p>这些都是和 <code>docker run</code> 支持的选项类似。</p>
<h2 id="八、安全"><a href="#八、安全" class="headerlink" title="八、安全"></a>八、安全</h2><h3 id="8-1-内核命名空间"><a href="#8-1-内核命名空间" class="headerlink" title="8.1 内核命名空间"></a>8.1 内核命名空间</h3><p>当使用 <code>docker run</code> 启动一个容器时，在后台 Docker 为容器创建一个独立的命名空间和控制集合。命名空间踢空了最基础的也是最直接的隔离，在容器中运行的进程不会被运行在主机上的进程和其他容器发现和作用。</p>
<h3 id="8-2-控制组"><a href="#8-2-控制组" class="headerlink" title="8.2 控制组"></a>8.2 控制组</h3><p>控制组是 Linux 容器机制的另一个关键组件，负责实现资源的审计和限制。</p>
<p>它提供了很多特性，确保哥哥容器可以公平地分享主机的内存、CPU、磁盘IO等资源；当然，更重要的是，控制组确保了当容器内的资源使用产生压力时不会连累主机系统。</p>
<h3 id="8-3-内核能力机制"><a href="#8-3-内核能力机制" class="headerlink" title="8.3 内核能力机制"></a>8.3 内核能力机制</h3><p>能力机制是 Linux 内核的一个强大特性，可以提供细粒度的权限访问控制。 可以作用在进程上，也可以作用在文件上。</p>
<p>例如一个服务需要绑定低于 1024 的端口权限，并不需要 root 权限，那么它只需要被授权 <code>net_bind_service</code> 能力即可。</p>
<p>默认情况下， Docker 启动的容器被严格限制只允许使用内核的一部分能力。</p>
<p>使用能力机制加强 Docker 容器的安全有很多好处，可以按需分配给容器权限，这样，即便攻击者在容器中取得了 root 权限，也不能获取宿主机较高权限，能进行的破坏也是有限的。</p>
<h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><p><a target="_blank" rel="noopener" href="https://docs.docker.com/engine/reference/commandline/images/">https://docs.docker.com/engine/reference/commandline/images/</a></p>
<p><a target="_blank" rel="noopener" href="http://www.dockerinfo.net/">http://www.dockerinfo.net/</a></p>

      
       <hr><span style="font-style: italic;color: gray;"> 转载请注明来源，欢迎对文章中的引用来源进行考证，欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论，也可以邮件至 jaytp@qq.com </span>
    </div>
</article>


<p>
    <a  class="dashang" onclick="dashangToggle()">赏</a>
</p>




    <div id="comments"></div>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">

<script type="text/javascript">
    $.getScript('/js/gitalk.js', function () {
        var gitalk = new Gitalk({
            clientID: 'dc7f8ca729fea878e59c',
            clientSecret: '67417ddbb12eeebb0de47187099e92ace7bdf90e',
            repo: 'yelog.github.io',
            owner: 'yelog',
            admin: ['yelog'],
            id: decodeURI(location.pathname),
            distractionFreeMode: 'true',
            language: 'zh-CN',
            perPage: parseInt('10',10)
        })
        gitalk.render('comments')
    })
</script>




    




    </div>
    <div class="copyright">
        <p class="footer-entry">
    ©2016-2020 Yelog
</p>
<p class="footer-entry">Built with <a href="https://hexo.io/" target="_blank">Hexo</a> and <a href="https://github.com/yelog/hexo-theme-3-hexo" target="_blank">3-hexo</a> theme</p>

    </div>
    <div class="full-toc">
        <button class="full" data-title="切换全屏 快捷键 s"><span class="min "></span></button>
<a class="" id="rocket" ></a>

    </div>
</div>

<div class="hide_box" onclick="dashangToggle()"></div>
<div class="shang_box">
    <a class="shang_close"  onclick="dashangToggle()">×</a>
    <div class="shang_tit">
        <p>喜欢就点赞,疼爱就打赏</p>
    </div>
    <div class="shang_payimg">
        <div class="pay_img">
            <img src="/img/alipay.jpg" class="alipay" title="扫码支持">
            <img src="/img/weixin.jpg" class="weixin" title="扫码支持">
        </div>
    </div>
    <div class="shang_payselect">
        <span><label><input type="radio" name="pay" checked value="alipay">支付宝</label></span><span><label><input type="radio" name="pay" value="weixin">微信</label></span>
    </div>
</div>


</body>
<script src="/js/jquery.pjax.js?v=1.1.0" ></script>

<script src="/js/script.js?v=1.1.0" ></script>
<script>
    var img_resize = 'default';
    function initArticle() {
        /*渲染对应的表格样式*/
        
            $("#post .pjax table").addClass("green_title");
        

        /*渲染打赏样式*/
        
        $("input[name=pay]").on("click", function () {
            if($("input[name=pay]:checked").val()=="weixin"){
                $(".shang_box .shang_payimg .pay_img").addClass("weixin_img");
            } else {
                $(".shang_box .shang_payimg .pay_img").removeClass("weixin_img");
            }
        })
        

        /*高亮代码块行号*/
        

        /*访问数量*/
        
        $.getScript("//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js");
        

        /*代码高亮，行号对齐*/
        $('.pre-numbering').css('line-height',$('.has-numbering').css('line-height'));

        
        
        /* 渲染*/
        function HTMLDecode(text) {
            var temp = document.createElement("div");
            temp.innerHTML = text;
            var output = temp.innerText || temp.textContent;
            temp = null;
            return output;
        }
        if (window.mermaid){
            window.mermaid = null
        }
        $.getScript("//cdn.jsdelivr.net/npm/mermaid@8.4.2/dist/mermaid.min.js", function () {
            var mermaidOptions = JSON.parse(HTMLDecode("{&#34;theme&#34;:&#34;default&#34;,&#34;startOnLoad&#34;:true,&#34;flowchart&#34;:{&#34;useMaxWidth&#34;:false,&#34;htmlLabels&#34;:true}}"))
            if (window.mermaid) {
                mermaid.initialize(mermaidOptions)
                mermaid.contentLoaded()
            }
        })
        
    }

    /*打赏页面隐藏与展示*/
    
    function dashangToggle() {
        $(".shang_box").fadeToggle();
        $(".hide_box").fadeToggle();
    }
    

</script>

<!--加入行号的高亮代码块样式-->

<!--自定义样式设置-->
<style>
    
    
    .nav {
        width: 542px;
    }
    .nav.fullscreen {
        margin-left: -542px;
    }
    .nav-left {
        width: 120px;
    }
    
    
    @media screen and (max-width: 1468px) {
        .nav {
            width: 492px;
        }
        .nav.fullscreen {
            margin-left: -492px;
        }
        .nav-left {
            width: 100px;
        }
    }
    
    
    @media screen and (max-width: 1024px) {
        .nav {
            width: 492px;
            margin-left: -492px
        }
        .nav.fullscreen {
            margin-left: 0;
        }
    }
    
    @media screen and (max-width: 426px) {
        .nav {
            width: 100%;
        }
        .nav-left {
            width: 100%;
        }
    }
    
    
    .nav-right .title-list nav a .post-title, .nav-right .title-list #local-search-result a .post-title {
        color: #383636;
    }
    
    
    .nav-right .title-list nav a .post-date, .nav-right .title-list #local-search-result a .post-date {
        color: #5e5e5f;
    }
    
    
    .nav-right nav a.hover, #local-search-result a.hover{
        background-color: #e2e0e0;
    }
    
    

    /*列表样式*/
    

    /* 背景图样式 */
    
    


    /*引用块样式*/
    

    /*文章列表背景图*/
    

    
</style>







</html>
